<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>GHC.Driver.Types</title><link href="linuwial.css" rel="stylesheet" type="text/css" title="Linuwial" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400i,700" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script type="text/x-mathjax-config">MathJax.Hub.Config({ tex2jax: { processClass: "mathjax", ignoreClass: ".*" } });</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><span class="caption">ghc-9.0.2: The GHC API</span><ul class="links" id="page-menu"><li><a href="src/GHC.Driver.Types.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe-Inferred</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">GHC.Driver.Types</p></div><div id="table-of-contents"><div id="contents-list"><p class="caption" onclick="window.scrollTo(0,0)">Contents</p><ul><li><a href="#g:1">compilation state</a></li><li><a href="#g:2">ModuleGraph</a></li><li><a href="#g:3">Hsc monad</a></li><li><a href="#g:4">Information about modules</a></li><li><a href="#g:5">Information about the module being compiled</a></li><li><a href="#g:6">State relating to modules in this package</a></li><li><a href="#g:7">State relating to known packages</a></li><li><a href="#g:8">Metaprogramming</a></li><li><a href="#g:9">Annotations</a></li><li><a href="#g:10">Interactive context</a></li><li><a href="#g:11">Interfaces</a></li><li><a href="#g:12">Fixity</a></li><li><a href="#g:13">TyThings and type environments</a></li><li><a href="#g:14">MonadThings</a></li><li><a href="#g:15">Information on imports and exports</a></li><li><a href="#g:16">Warnings</a></li><li><a href="#g:17">Linker stuff</a></li><li><a href="#g:18">Program coverage</a></li><li><a href="#g:19">Breakpoints</a></li><li><a href="#g:20">Safe Haskell information</a></li><li><a href="#g:21">result of the parser</a></li><li><a href="#g:22">Compilation errors and warnings</a></li><li><a href="#g:23">COMPLETE signature</a></li><li><a href="#g:24">Exstensible Iface fields</a></li></ul></div></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Types for the per-module compiler</p></div></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><span class="keyword">data</span> <a href="#t:HscEnv">HscEnv</a> = <a href="#v:HscEnv">HscEnv</a> {<ul class="subs"><li><a href="#v:hsc_dflags">hsc_dflags</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></li><li><a href="#v:hsc_targets">hsc_targets</a> :: [<a href="GHC-Driver-Types.html#t:Target" title="GHC.Driver.Types">Target</a>]</li><li><a href="#v:hsc_mod_graph">hsc_mod_graph</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a></li><li><a href="#v:hsc_IC">hsc_IC</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a></li><li><a href="#v:hsc_HPT">hsc_HPT</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></li><li><a href="#v:hsc_EPS">hsc_EPS</a> :: !(<a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Driver-Types.html#t:ExternalPackageState" title="GHC.Driver.Types">ExternalPackageState</a>)</li><li><a href="#v:hsc_NC">hsc_NC</a> :: !(<a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Types-Name-Cache.html#t:NameCache" title="GHC.Types.Name.Cache">NameCache</a>)</li><li><a href="#v:hsc_FC">hsc_FC</a> :: !(<a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Driver-Types.html#t:FinderCache" title="GHC.Driver.Types">FinderCache</a>)</li><li><a href="#v:hsc_type_env_var">hsc_type_env_var</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>, <a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a>)</li><li><a href="#v:hsc_interp">hsc_interp</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Runtime-Interpreter-Types.html#t:Interp" title="GHC.Runtime.Interpreter.Types">Interp</a></li><li><a href="#v:hsc_dynLinker">hsc_dynLinker</a> :: <a href="GHC-Runtime-Linker-Types.html#t:DynLinker" title="GHC.Runtime.Linker.Types">DynLinker</a></li></ul>}</li><li class="src short"><a href="#v:hscEPS">hscEPS</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ExternalPackageState" title="GHC.Driver.Types">ExternalPackageState</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:FinderCache">FinderCache</a> = <a href="GHC-Unit-Module-Env.html#t:InstalledModuleEnv" title="GHC.Unit.Module.Env">InstalledModuleEnv</a> <a href="GHC-Driver-Types.html#t:InstalledFindResult" title="GHC.Driver.Types">InstalledFindResult</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:FindResult">FindResult</a><ul class="subs"><li>= <a href="#v:Found">Found</a> <a href="GHC-Unit-Module-Location.html#t:ModLocation" title="GHC.Unit.Module.Location">ModLocation</a> <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li>| <a href="#v:NoPackage">NoPackage</a> <a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a></li><li>| <a href="#v:FoundMultiple">FoundMultiple</a> [(<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>, <a href="GHC-Unit-State.html#t:ModuleOrigin" title="GHC.Unit.State">ModuleOrigin</a>)]</li><li>| <a href="#v:NotFound">NotFound</a> { <ul class="subs"><li><a href="#v:fr_paths">fr_paths</a> :: [<a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>]</li><li><a href="#v:fr_pkg">fr_pkg</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a></li><li><a href="#v:fr_mods_hidden">fr_mods_hidden</a> :: [<a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a>]</li><li><a href="#v:fr_pkgs_hidden">fr_pkgs_hidden</a> :: [<a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a>]</li><li><a href="#v:fr_unusables">fr_unusables</a> :: [(<a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a>, <a href="GHC-Unit-State.html#t:UnusableUnitReason" title="GHC.Unit.State">UnusableUnitReason</a>)]</li><li><a href="#v:fr_suggestions">fr_suggestions</a> :: [<a href="GHC-Unit-State.html#t:ModuleSuggestion" title="GHC.Unit.State">ModuleSuggestion</a>]</li></ul> }</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:InstalledFindResult">InstalledFindResult</a><ul class="subs"><li>= <a href="#v:InstalledFound">InstalledFound</a> <a href="GHC-Unit-Module-Location.html#t:ModLocation" title="GHC.Unit.Module.Location">ModLocation</a> <a href="GHC-Unit-Types.html#t:InstalledModule" title="GHC.Unit.Types">InstalledModule</a></li><li>| <a href="#v:InstalledNoPackage">InstalledNoPackage</a> <a href="GHC-Unit-Types.html#t:UnitId" title="GHC.Unit.Types">UnitId</a></li><li>| <a href="#v:InstalledNotFound">InstalledNotFound</a> [<a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>] (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Unit-Types.html#t:UnitId" title="GHC.Unit.Types">UnitId</a>)</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Target">Target</a> = <a href="#v:Target">Target</a> {<ul class="subs"><li><a href="#v:targetId">targetId</a> :: !<a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a></li><li><a href="#v:targetAllowObjCode">targetAllowObjCode</a> :: !<a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li><a href="#v:targetContents">targetContents</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (<a href="GHC-Driver-Types.html#t:InputFileBuffer" title="GHC.Driver.Types">InputFileBuffer</a>, <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a>))</li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:TargetId">TargetId</a><ul class="subs"><li>= <a href="#v:TargetModule">TargetModule</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></li><li>| <a href="#v:TargetFile">TargetFile</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Phases.html#t:Phase" title="GHC.Driver.Phases">Phase</a>)</li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:InputFileBuffer">InputFileBuffer</a> = <a href="GHC-Data-StringBuffer.html#t:StringBuffer" title="GHC.Data.StringBuffer">StringBuffer</a></li><li class="src short"><a href="#v:pprTarget">pprTarget</a> :: <a href="GHC-Driver-Types.html#t:Target" title="GHC.Driver.Types">Target</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a></li><li class="src short"><a href="#v:pprTargetId">pprTargetId</a> :: <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:HscStatus">HscStatus</a><ul class="subs"><li>= <a href="#v:HscNotGeneratingCode">HscNotGeneratingCode</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></li><li>| <a href="#v:HscUpToDate">HscUpToDate</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></li><li>| <a href="#v:HscUpdateBoot">HscUpdateBoot</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></li><li>| <a href="#v:HscUpdateSig">HscUpdateSig</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></li><li>| <a href="#v:HscRecomp">HscRecomp</a> { <ul class="subs"><li><a href="#v:hscs_guts">hscs_guts</a> :: <a href="GHC-Driver-Types.html#t:CgGuts" title="GHC.Driver.Types">CgGuts</a></li><li><a href="#v:hscs_mod_location">hscs_mod_location</a> :: !<a href="GHC-Unit-Module-Location.html#t:ModLocation" title="GHC.Unit.Module.Location">ModLocation</a></li><li><a href="#v:hscs_partial_iface">hscs_partial_iface</a> :: !<a href="GHC-Driver-Types.html#t:PartialModIface" title="GHC.Driver.Types">PartialModIface</a></li><li><a href="#v:hscs_old_iface_hash">hscs_old_iface_hash</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>)</li><li><a href="#v:hscs_iface_dflags">hscs_iface_dflags</a> :: !<a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></li></ul> }</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:ModuleGraph">ModuleGraph</a></li><li class="src short"><a href="#v:emptyMG">emptyMG</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a></li><li class="src short"><a href="#v:mkModuleGraph">mkModuleGraph</a> :: [<a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a>] -&gt; <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a></li><li class="src short"><a href="#v:extendMG">extendMG</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a></li><li class="src short"><a href="#v:mapMG">mapMG</a> :: (<a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a>) -&gt; <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a></li><li class="src short"><a href="#v:mgModSummaries">mgModSummaries</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; [<a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a>]</li><li class="src short"><a href="#v:mgElemModule">mgElemModule</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><a href="#v:mgLookupModule">mgLookupModule</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a></li><li class="src short"><a href="#v:needsTemplateHaskellOrQQ">needsTemplateHaskellOrQQ</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><a href="#v:mgBootModules">mgBootModules</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Unit-Module-Env.html#t:ModuleSet" title="GHC.Unit.Module.Env">ModuleSet</a></li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Hsc">Hsc</a> a = <a href="#v:Hsc">Hsc</a> (<a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Utils-Error.html#t:WarningMessages" title="GHC.Utils.Error">WarningMessages</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (a, <a href="GHC-Utils-Error.html#t:WarningMessages" title="GHC.Utils.Error">WarningMessages</a>))</li><li class="src short"><a href="#v:runHsc">runHsc</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> a</li><li class="src short"><a href="#v:mkInteractiveHscEnv">mkInteractiveHscEnv</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a></li><li class="src short"><a href="#v:runInteractiveHsc">runInteractiveHsc</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> a</li><li class="src short"><span class="keyword">data</span> <a href="#t:ModDetails">ModDetails</a> = <a href="#v:ModDetails">ModDetails</a> {<ul class="subs"><li><a href="#v:md_exports">md_exports</a> :: [<a href="GHC-Types-Avail.html#t:AvailInfo" title="GHC.Types.Avail">AvailInfo</a>]</li><li><a href="#v:md_types">md_types</a> :: !<a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li><a href="#v:md_insts">md_insts</a> :: ![<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>]</li><li><a href="#v:md_fam_insts">md_fam_insts</a> :: ![<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>]</li><li><a href="#v:md_rules">md_rules</a> :: ![<a href="GHC-Core.html#t:CoreRule" title="GHC.Core">CoreRule</a>]</li><li><a href="#v:md_anns">md_anns</a> :: ![<a href="GHC-Types-Annotations.html#t:Annotation" title="GHC.Types.Annotations">Annotation</a>]</li><li><a href="#v:md_complete_sigs">md_complete_sigs</a> :: [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>]</li></ul>}</li><li class="src short"><a href="#v:emptyModDetails">emptyModDetails</a> :: <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:ModGuts">ModGuts</a> = <a href="#v:ModGuts">ModGuts</a> {<ul class="subs"><li><a href="#v:mg_module">mg_module</a> :: !<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li><a href="#v:mg_hsc_src">mg_hsc_src</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></li><li><a href="#v:mg_loc">mg_loc</a> :: <a href="GHC-Types-SrcLoc.html#t:SrcSpan" title="GHC.Types.SrcLoc">SrcSpan</a></li><li><a href="#v:mg_exports">mg_exports</a> :: ![<a href="GHC-Types-Avail.html#t:AvailInfo" title="GHC.Types.Avail">AvailInfo</a>]</li><li><a href="#v:mg_deps">mg_deps</a> :: !<a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a></li><li><a href="#v:mg_usages">mg_usages</a> :: ![<a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a>]</li><li><a href="#v:mg_used_th">mg_used_th</a> :: !<a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li><a href="#v:mg_rdr_env">mg_rdr_env</a> :: !<a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a></li><li><a href="#v:mg_fix_env">mg_fix_env</a> :: !<a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a></li><li><a href="#v:mg_tcs">mg_tcs</a> :: ![<a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a>]</li><li><a href="#v:mg_insts">mg_insts</a> :: ![<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>]</li><li><a href="#v:mg_fam_insts">mg_fam_insts</a> :: ![<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>]</li><li><a href="#v:mg_patsyns">mg_patsyns</a> :: ![<a href="GHC-Core-PatSyn.html#t:PatSyn" title="GHC.Core.PatSyn">PatSyn</a>]</li><li><a href="#v:mg_rules">mg_rules</a> :: ![<a href="GHC-Core.html#t:CoreRule" title="GHC.Core">CoreRule</a>]</li><li><a href="#v:mg_binds">mg_binds</a> :: !<a href="GHC-Core.html#t:CoreProgram" title="GHC.Core">CoreProgram</a></li><li><a href="#v:mg_foreign">mg_foreign</a> :: !<a href="GHC-Driver-Types.html#t:ForeignStubs" title="GHC.Driver.Types">ForeignStubs</a></li><li><a href="#v:mg_foreign_files">mg_foreign_files</a> :: ![(<a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a>, <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>)]</li><li><a href="#v:mg_warns">mg_warns</a> :: !<a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a></li><li><a href="#v:mg_anns">mg_anns</a> :: [<a href="GHC-Types-Annotations.html#t:Annotation" title="GHC.Types.Annotations">Annotation</a>]</li><li><a href="#v:mg_complete_sigs">mg_complete_sigs</a> :: [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>]</li><li><a href="#v:mg_hpc_info">mg_hpc_info</a> :: !<a href="GHC-Driver-Types.html#t:HpcInfo" title="GHC.Driver.Types">HpcInfo</a></li><li><a href="#v:mg_modBreaks">mg_modBreaks</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModBreaks" title="GHC.Driver.Types">ModBreaks</a>)</li><li><a href="#v:mg_inst_env">mg_inst_env</a> :: <a href="GHC-Core-InstEnv.html#t:InstEnv" title="GHC.Core.InstEnv">InstEnv</a></li><li><a href="#v:mg_fam_inst_env">mg_fam_inst_env</a> :: <a href="GHC-Core-FamInstEnv.html#t:FamInstEnv" title="GHC.Core.FamInstEnv">FamInstEnv</a></li><li><a href="#v:mg_safe_haskell">mg_safe_haskell</a> :: <a href="GHC-Driver-Session.html#t:SafeHaskellMode" title="GHC.Driver.Session">SafeHaskellMode</a></li><li><a href="#v:mg_trust_pkg">mg_trust_pkg</a> :: <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li><a href="#v:mg_doc_hdr">mg_doc_hdr</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Hs-Doc.html#t:HsDocString" title="GHC.Hs.Doc">HsDocString</a>)</li><li><a href="#v:mg_decl_docs">mg_decl_docs</a> :: !<a href="GHC-Hs-Doc.html#t:DeclDocMap" title="GHC.Hs.Doc">DeclDocMap</a></li><li><a href="#v:mg_arg_docs">mg_arg_docs</a> :: !<a href="GHC-Hs-Doc.html#t:ArgDocMap" title="GHC.Hs.Doc">ArgDocMap</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:CgGuts">CgGuts</a> = <a href="#v:CgGuts">CgGuts</a> {<ul class="subs"><li><a href="#v:cg_module">cg_module</a> :: !<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li><a href="#v:cg_tycons">cg_tycons</a> :: [<a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a>]</li><li><a href="#v:cg_binds">cg_binds</a> :: <a href="GHC-Core.html#t:CoreProgram" title="GHC.Core">CoreProgram</a></li><li><a href="#v:cg_foreign">cg_foreign</a> :: !<a href="GHC-Driver-Types.html#t:ForeignStubs" title="GHC.Driver.Types">ForeignStubs</a></li><li><a href="#v:cg_foreign_files">cg_foreign_files</a> :: ![(<a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a>, <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>)]</li><li><a href="#v:cg_dep_pkgs">cg_dep_pkgs</a> :: ![<a href="GHC-Unit-Types.html#t:UnitId" title="GHC.Unit.Types">UnitId</a>]</li><li><a href="#v:cg_hpc_info">cg_hpc_info</a> :: !<a href="GHC-Driver-Types.html#t:HpcInfo" title="GHC.Driver.Types">HpcInfo</a></li><li><a href="#v:cg_modBreaks">cg_modBreaks</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModBreaks" title="GHC.Driver.Types">ModBreaks</a>)</li><li><a href="#v:cg_spt_entries">cg_spt_entries</a> :: [<a href="GHC-Driver-Types.html#t:SptEntry" title="GHC.Driver.Types">SptEntry</a>]</li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:ForeignStubs">ForeignStubs</a><ul class="subs"><li>= <a href="#v:NoStubs">NoStubs</a></li><li>| <a href="#v:ForeignStubs">ForeignStubs</a> <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a></li></ul></li><li class="src short"><a href="#v:appendStubC">appendStubC</a> :: <a href="GHC-Driver-Types.html#t:ForeignStubs" title="GHC.Driver.Types">ForeignStubs</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> -&gt; <a href="GHC-Driver-Types.html#t:ForeignStubs" title="GHC.Driver.Types">ForeignStubs</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:ImportedMods">ImportedMods</a> = <a href="GHC-Unit-Module-Env.html#t:ModuleEnv" title="GHC.Unit.Module.Env">ModuleEnv</a> [<a href="GHC-Driver-Types.html#t:ImportedBy" title="GHC.Driver.Types">ImportedBy</a>]</li><li class="src short"><span class="keyword">data</span> <a href="#t:ImportedBy">ImportedBy</a><ul class="subs"><li>= <a href="#v:ImportedByUser">ImportedByUser</a> <a href="GHC-Driver-Types.html#t:ImportedModsVal" title="GHC.Driver.Types">ImportedModsVal</a></li><li>| <a href="#v:ImportedBySystem">ImportedBySystem</a></li></ul></li><li class="src short"><a href="#v:importedByUser">importedByUser</a> :: [<a href="GHC-Driver-Types.html#t:ImportedBy" title="GHC.Driver.Types">ImportedBy</a>] -&gt; [<a href="GHC-Driver-Types.html#t:ImportedModsVal" title="GHC.Driver.Types">ImportedModsVal</a>]</li><li class="src short"><span class="keyword">data</span> <a href="#t:ImportedModsVal">ImportedModsVal</a> = <a href="#v:ImportedModsVal">ImportedModsVal</a> {<ul class="subs"><li><a href="#v:imv_name">imv_name</a> :: <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></li><li><a href="#v:imv_span">imv_span</a> :: <a href="GHC-Types-SrcLoc.html#t:SrcSpan" title="GHC.Types.SrcLoc">SrcSpan</a></li><li><a href="#v:imv_is_safe">imv_is_safe</a> :: <a href="GHC-Driver-Types.html#t:IsSafeImport" title="GHC.Driver.Types">IsSafeImport</a></li><li><a href="#v:imv_is_hiding">imv_is_hiding</a> :: <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li><a href="#v:imv_all_exports">imv_all_exports</a> :: !<a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a></li><li><a href="#v:imv_qualified">imv_qualified</a> :: <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:SptEntry">SptEntry</a> = <a href="#v:SptEntry">SptEntry</a> <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a> <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:ForeignSrcLang">ForeignSrcLang</a><ul class="subs"><li>= <a href="#v:LangC">LangC</a></li><li>| <a href="#v:LangCxx">LangCxx</a></li><li>| <a href="#v:LangObjc">LangObjc</a></li><li>| <a href="#v:LangObjcxx">LangObjcxx</a></li><li>| <a href="#v:LangAsm">LangAsm</a></li><li>| <a href="#v:RawObject">RawObject</a></li></ul></li><li class="src short"><a href="#v:phaseForeignLanguage">phaseForeignLanguage</a> :: <a href="GHC-Driver-Phases.html#t:Phase" title="GHC.Driver.Phases">Phase</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:ModSummary">ModSummary</a> = <a href="#v:ModSummary">ModSummary</a> {<ul class="subs"><li><a href="#v:ms_mod">ms_mod</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li><a href="#v:ms_hsc_src">ms_hsc_src</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></li><li><a href="#v:ms_location">ms_location</a> :: <a href="GHC-Unit-Module-Location.html#t:ModLocation" title="GHC.Unit.Module.Location">ModLocation</a></li><li><a href="#v:ms_hs_date">ms_hs_date</a> :: <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></li><li><a href="#v:ms_obj_date">ms_obj_date</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></li><li><a href="#v:ms_iface_date">ms_iface_date</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></li><li><a href="#v:ms_hie_date">ms_hie_date</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></li><li><a href="#v:ms_srcimps">ms_srcimps</a> :: [(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-FastString.html#t:FastString" title="GHC.Data.FastString">FastString</a>, <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)]</li><li><a href="#v:ms_textual_imps">ms_textual_imps</a> :: [(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-FastString.html#t:FastString" title="GHC.Data.FastString">FastString</a>, <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)]</li><li><a href="#v:ms_parsed_mod">ms_parsed_mod</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:HsParsedModule" title="GHC.Driver.Types">HsParsedModule</a></li><li><a href="#v:ms_hspp_file">ms_hspp_file</a> :: <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li><a href="#v:ms_hspp_opts">ms_hspp_opts</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></li><li><a href="#v:ms_hspp_buf">ms_hspp_buf</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-StringBuffer.html#t:StringBuffer" title="GHC.Data.StringBuffer">StringBuffer</a></li></ul>}</li><li class="src short"><a href="#v:ms_imps">ms_imps</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; [(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-FastString.html#t:FastString" title="GHC.Data.FastString">FastString</a>, <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)]</li><li class="src short"><a href="#v:ms_installed_mod">ms_installed_mod</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Unit-Types.html#t:InstalledModule" title="GHC.Unit.Types">InstalledModule</a></li><li class="src short"><a href="#v:ms_mod_name">ms_mod_name</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></li><li class="src short"><a href="#v:ms_home_imps">ms_home_imps</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>]</li><li class="src short"><a href="#v:home_imps">home_imps</a> :: [(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-FastString.html#t:FastString" title="GHC.Data.FastString">FastString</a>, <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)] -&gt; [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>]</li><li class="src short"><a href="#v:ms_home_allimps">ms_home_allimps</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; [<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>]</li><li class="src short"><a href="#v:ms_home_srcimps">ms_home_srcimps</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>]</li><li class="src short"><a href="#v:showModMsg">showModMsg</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Driver-Session.html#t:HscTarget" title="GHC.Driver.Session">HscTarget</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> -&gt; <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a></li><li class="src short"><a href="#v:isBootSummary">isBootSummary</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a></li><li class="src short"><a href="#v:msHsFilePath">msHsFilePath</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li class="src short"><a href="#v:msHiFilePath">msHiFilePath</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li class="src short"><a href="#v:msObjFilePath">msObjFilePath</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:SourceModified">SourceModified</a><ul class="subs"><li>= <a href="#v:SourceModified">SourceModified</a></li><li>| <a href="#v:SourceUnmodified">SourceUnmodified</a></li><li>| <a href="#v:SourceUnmodifiedAndStable">SourceUnmodifiedAndStable</a></li></ul></li><li class="src short"><a href="#v:isTemplateHaskellOrQQNonBoot">isTemplateHaskellOrQQNonBoot</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:HscSource">HscSource</a><ul class="subs"><li>= <a href="#v:HsSrcFile">HsSrcFile</a></li><li>| <a href="#v:HsBootFile">HsBootFile</a></li><li>| <a href="#v:HsigFile">HsigFile</a></li></ul></li><li class="src short"><a href="#v:isHsBootOrSig">isHsBootOrSig</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><a href="#v:isHsigFile">isHsigFile</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><a href="#v:hscSourceString">hscSourceString</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:HomePackageTable">HomePackageTable</a> = <a href="GHC-Unit-Module-Env.html#t:DModuleNameEnv" title="GHC.Unit.Module.Env">DModuleNameEnv</a> <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:HomeModInfo">HomeModInfo</a> = <a href="#v:HomeModInfo">HomeModInfo</a> {<ul class="subs"><li><a href="#v:hm_iface">hm_iface</a> :: !<a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></li><li><a href="#v:hm_details">hm_details</a> :: !<a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></li><li><a href="#v:hm_linkable">hm_linkable</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:Linkable" title="GHC.Driver.Types">Linkable</a>)</li></ul>}</li><li class="src short"><a href="#v:emptyHomePackageTable">emptyHomePackageTable</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></li><li class="src short"><a href="#v:lookupHpt">lookupHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a></li><li class="src short"><a href="#v:eltsHpt">eltsHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; [<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a>]</li><li class="src short"><a href="#v:filterHpt">filterHpt</a> :: (<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>) -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></li><li class="src short"><a href="#v:allHpt">allHpt</a> :: (<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>) -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><a href="#v:anyHpt">anyHpt</a> :: (<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>) -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><a href="#v:mapHpt">mapHpt</a> :: (<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a>) -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></li><li class="src short"><a href="#v:delFromHpt">delFromHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></li><li class="src short"><a href="#v:addToHpt">addToHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></li><li class="src short"><a href="#v:addListToHpt">addListToHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; [(<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>, <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a>)] -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></li><li class="src short"><a href="#v:lookupHptDirectly">lookupHptDirectly</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Types-Unique.html#t:Unique" title="GHC.Types.Unique">Unique</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a></li><li class="src short"><a href="#v:listToHpt">listToHpt</a> :: [(<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>, <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a>)] -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></li><li class="src short"><a href="#v:hptCompleteSigs">hptCompleteSigs</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>]</li><li class="src short"><a href="#v:hptInstances">hptInstances</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; (<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>) -&gt; ([<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>], [<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>])</li><li class="src short"><a href="#v:hptRules">hptRules</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; [<a href="GHC-Unit-Types.html#t:ModuleNameWithIsBoot" title="GHC.Unit.Types">ModuleNameWithIsBoot</a>] -&gt; [<a href="GHC-Core.html#t:CoreRule" title="GHC.Core">CoreRule</a>]</li><li class="src short"><a href="#v:pprHPT">pprHPT</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:ExternalPackageState">ExternalPackageState</a> = <a href="#v:EPS">EPS</a> {<ul class="subs"><li><a href="#v:eps_is_boot">eps_is_boot</a> :: !(<a href="GHC-Unit-Module-Env.html#t:ModuleNameEnv" title="GHC.Unit.Module.Env">ModuleNameEnv</a> <a href="GHC-Unit-Types.html#t:ModuleNameWithIsBoot" title="GHC.Unit.Types">ModuleNameWithIsBoot</a>)</li><li><a href="#v:eps_PIT">eps_PIT</a> :: !<a href="GHC-Driver-Types.html#t:PackageIfaceTable" title="GHC.Driver.Types">PackageIfaceTable</a></li><li><a href="#v:eps_free_holes">eps_free_holes</a> :: <a href="GHC-Unit-Module-Env.html#t:InstalledModuleEnv" title="GHC.Unit.Module.Env">InstalledModuleEnv</a> (<a href="GHC-Types-Unique-DSet.html#t:UniqDSet" title="GHC.Types.Unique.DSet">UniqDSet</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)</li><li><a href="#v:eps_PTE">eps_PTE</a> :: !<a href="GHC-Driver-Types.html#t:PackageTypeEnv" title="GHC.Driver.Types">PackageTypeEnv</a></li><li><a href="#v:eps_inst_env">eps_inst_env</a> :: !<a href="GHC-Driver-Types.html#t:PackageInstEnv" title="GHC.Driver.Types">PackageInstEnv</a></li><li><a href="#v:eps_fam_inst_env">eps_fam_inst_env</a> :: !<a href="GHC-Driver-Types.html#t:PackageFamInstEnv" title="GHC.Driver.Types">PackageFamInstEnv</a></li><li><a href="#v:eps_rule_base">eps_rule_base</a> :: !<a href="GHC-Driver-Types.html#t:PackageRuleBase" title="GHC.Driver.Types">PackageRuleBase</a></li><li><a href="#v:eps_ann_env">eps_ann_env</a> :: !PackageAnnEnv</li><li><a href="#v:eps_complete_matches">eps_complete_matches</a> :: !<a href="GHC-Driver-Types.html#t:PackageCompleteMatchMap" title="GHC.Driver.Types">PackageCompleteMatchMap</a></li><li><a href="#v:eps_mod_fam_inst_env">eps_mod_fam_inst_env</a> :: !(<a href="GHC-Unit-Module-Env.html#t:ModuleEnv" title="GHC.Unit.Module.Env">ModuleEnv</a> <a href="GHC-Core-FamInstEnv.html#t:FamInstEnv" title="GHC.Core.FamInstEnv">FamInstEnv</a>)</li><li><a href="#v:eps_stats">eps_stats</a> :: !<a href="GHC-Driver-Types.html#t:EpsStats" title="GHC.Driver.Types">EpsStats</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:EpsStats">EpsStats</a> = <a href="#v:EpsStats">EpsStats</a> {<ul class="subs"><li><a href="#v:n_ifaces_in">n_ifaces_in</a>, <a href="#v:n_decls_in">n_decls_in</a>, <a href="#v:n_decls_out">n_decls_out</a>, <a href="#v:n_rules_in">n_rules_in</a>, <a href="#v:n_rules_out">n_rules_out</a>, <a href="#v:n_insts_in">n_insts_in</a>, <a href="#v:n_insts_out">n_insts_out</a> :: !<a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a></li></ul>}</li><li class="src short"><a href="#v:addEpsInStats">addEpsInStats</a> :: <a href="GHC-Driver-Types.html#t:EpsStats" title="GHC.Driver.Types">EpsStats</a> -&gt; <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Driver-Types.html#t:EpsStats" title="GHC.Driver.Types">EpsStats</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:PackageTypeEnv">PackageTypeEnv</a> = <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:PackageIfaceTable">PackageIfaceTable</a> = <a href="GHC-Unit-Module-Env.html#t:ModuleEnv" title="GHC.Unit.Module.Env">ModuleEnv</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></li><li class="src short"><a href="#v:emptyPackageIfaceTable">emptyPackageIfaceTable</a> :: <a href="GHC-Driver-Types.html#t:PackageIfaceTable" title="GHC.Driver.Types">PackageIfaceTable</a></li><li class="src short"><a href="#v:lookupIfaceByModule">lookupIfaceByModule</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Driver-Types.html#t:PackageIfaceTable" title="GHC.Driver.Types">PackageIfaceTable</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></li><li class="src short"><a href="#v:emptyPartialModIface">emptyPartialModIface</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Driver-Types.html#t:PartialModIface" title="GHC.Driver.Types">PartialModIface</a></li><li class="src short"><a href="#v:emptyFullModIface">emptyFullModIface</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></li><li class="src short"><a href="#v:lookupHptByModule">lookupHptByModule</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:PackageInstEnv">PackageInstEnv</a> = <a href="GHC-Core-InstEnv.html#t:InstEnv" title="GHC.Core.InstEnv">InstEnv</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:PackageFamInstEnv">PackageFamInstEnv</a> = <a href="GHC-Core-FamInstEnv.html#t:FamInstEnv" title="GHC.Core.FamInstEnv">FamInstEnv</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:PackageRuleBase">PackageRuleBase</a> = <a href="GHC-Core.html#t:RuleBase" title="GHC.Core">RuleBase</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:PackageCompleteMatchMap">PackageCompleteMatchMap</a> = <a href="GHC-Driver-Types.html#t:CompleteMatchMap" title="GHC.Driver.Types">CompleteMatchMap</a></li><li class="src short"><a href="#v:mkSOName">mkSOName</a> :: <a href="GHC-Settings.html#t:Platform" title="GHC.Settings">Platform</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li class="src short"><a href="#v:mkHsSOName">mkHsSOName</a> :: <a href="GHC-Settings.html#t:Platform" title="GHC.Settings">Platform</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li class="src short"><a href="#v:soExt">soExt</a> :: <a href="GHC-Settings.html#t:Platform" title="GHC.Settings">Platform</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:MetaRequest">MetaRequest</a><ul class="subs"><li>= <a href="#v:MetaE">MetaE</a> (<a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a> -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</li><li>| <a href="#v:MetaP">MetaP</a> (<a href="GHC-Hs-Pat.html#t:LPat" title="GHC.Hs.Pat">LPat</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a> -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</li><li>| <a href="#v:MetaT">MetaT</a> (<a href="GHC-Hs-Type.html#t:LHsType" title="GHC.Hs.Type">LHsType</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a> -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</li><li>| <a href="#v:MetaD">MetaD</a> ([<a href="GHC-Hs-Decls.html#t:LHsDecl" title="GHC.Hs.Decls">LHsDecl</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>] -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</li><li>| <a href="#v:MetaAW">MetaAW</a> (<a href="../ghc-boot/GHC-Serialized.html#t:Serialized" title="GHC.Serialized">Serialized</a> -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:MetaResult">MetaResult</a></li><li class="src short"><a href="#v:metaRequestE">metaRequestE</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f (<a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>)</li><li class="src short"><a href="#v:metaRequestP">metaRequestP</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f (<a href="GHC-Hs-Pat.html#t:LPat" title="GHC.Hs.Pat">LPat</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>)</li><li class="src short"><a href="#v:metaRequestT">metaRequestT</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f (<a href="GHC-Hs-Type.html#t:LHsType" title="GHC.Hs.Type">LHsType</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>)</li><li class="src short"><a href="#v:metaRequestD">metaRequestD</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f [<a href="GHC-Hs-Decls.html#t:LHsDecl" title="GHC.Hs.Decls">LHsDecl</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>]</li><li class="src short"><a href="#v:metaRequestAW">metaRequestAW</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f <a href="../ghc-boot/GHC-Serialized.html#t:Serialized" title="GHC.Serialized">Serialized</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:MetaHook">MetaHook</a> f = <a href="GHC-Driver-Types.html#t:MetaRequest" title="GHC.Driver.Types">MetaRequest</a> -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a></li><li class="src short"><a href="#v:prepareAnnotations">prepareAnnotations</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModGuts" title="GHC.Driver.Types">ModGuts</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Types-Annotations.html#t:AnnEnv" title="GHC.Types.Annotations">AnnEnv</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:InteractiveContext">InteractiveContext</a> = <a href="#v:InteractiveContext">InteractiveContext</a> {<ul class="subs"><li><a href="#v:ic_dflags">ic_dflags</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></li><li><a href="#v:ic_mod_index">ic_mod_index</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a></li><li><a href="#v:ic_imports">ic_imports</a> :: [<a href="GHC-Driver-Types.html#t:InteractiveImport" title="GHC.Driver.Types">InteractiveImport</a>]</li><li><a href="#v:ic_tythings">ic_tythings</a> :: [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>]</li><li><a href="#v:ic_rn_gbl_env">ic_rn_gbl_env</a> :: <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a></li><li><a href="#v:ic_instances">ic_instances</a> :: ([<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>], [<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>])</li><li><a href="#v:ic_fix_env">ic_fix_env</a> :: <a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a></li><li><a href="#v:ic_default">ic_default</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> [<a href="GHC-Core-Type.html#t:Type" title="GHC.Core.Type">Type</a>]</li><li><a href="#v:ic_resume">ic_resume</a> :: [<a href="GHC-Runtime-Eval-Types.html#t:Resume" title="GHC.Runtime.Eval.Types">Resume</a>]</li><li><a href="#v:ic_monad">ic_monad</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></li><li><a href="#v:ic_int_print">ic_int_print</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></li><li><a href="#v:ic_cwd">ic_cwd</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li></ul>}</li><li class="src short"><a href="#v:emptyInteractiveContext">emptyInteractiveContext</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a></li><li class="src short"><a href="#v:icPrintUnqual">icPrintUnqual</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; <a href="GHC-Utils-Outputable.html#t:PrintUnqualified" title="GHC.Utils.Outputable">PrintUnqualified</a></li><li class="src short"><a href="#v:icInScopeTTs">icInScopeTTs</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>]</li><li class="src short"><a href="#v:icExtendGblRdrEnv">icExtendGblRdrEnv</a> :: <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a></li><li class="src short"><a href="#v:extendInteractiveContext">extendInteractiveContext</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; [<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>] -&gt; [<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>] -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> [<a href="GHC-Core-Type.html#t:Type" title="GHC.Core.Type">Type</a>] -&gt; <a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a></li><li class="src short"><a href="#v:extendInteractiveContextWithIds">extendInteractiveContextWithIds</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; [<a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a>] -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a></li><li class="src short"><a href="#v:substInteractiveContext">substInteractiveContext</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; <a href="GHC-Core-Type.html#t:TCvSubst" title="GHC.Core.Type">TCvSubst</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a></li><li class="src short"><a href="#v:setInteractivePrintName">setInteractivePrintName</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a></li><li class="src short"><a href="#v:icInteractiveModule">icInteractiveModule</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:InteractiveImport">InteractiveImport</a><ul class="subs"><li>= <a href="#v:IIDecl">IIDecl</a> (<a href="GHC-Hs-ImpExp.html#t:ImportDecl" title="GHC.Hs.ImpExp">ImportDecl</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>)</li><li>| <a href="#v:IIModule">IIModule</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></li></ul></li><li class="src short"><a href="#v:setInteractivePackage">setInteractivePackage</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a></li><li class="src short"><a href="#v:mkPrintUnqualified">mkPrintUnqualified</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a> -&gt; <a href="GHC-Utils-Outputable.html#t:PrintUnqualified" title="GHC.Utils.Outputable">PrintUnqualified</a></li><li class="src short"><a href="#v:pprModulePrefix">pprModulePrefix</a> :: <a href="GHC-Utils-Outputable.html#t:PprStyle" title="GHC.Utils.Outputable">PprStyle</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a></li><li class="src short"><a href="#v:mkQualPackage">mkQualPackage</a> :: <a href="GHC-Unit-State.html#t:UnitState" title="GHC.Unit.State">UnitState</a> -&gt; <a href="GHC-Utils-Outputable.html#t:QueryQualifyPackage" title="GHC.Utils.Outputable">QueryQualifyPackage</a></li><li class="src short"><a href="#v:mkQualModule">mkQualModule</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Utils-Outputable.html#t:QueryQualifyModule" title="GHC.Utils.Outputable">QueryQualifyModule</a></li><li class="src short"><a href="#v:pkgQual">pkgQual</a> :: <a href="GHC-Unit-State.html#t:UnitState" title="GHC.Unit.State">UnitState</a> -&gt; <a href="GHC-Utils-Outputable.html#t:PrintUnqualified" title="GHC.Utils.Outputable">PrintUnqualified</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:ModIface">ModIface</a> = <a href="GHC-Driver-Types.html#t:ModIface_" title="GHC.Driver.Types">ModIface_</a> 'ModIfaceFinal</li><li class="src short"><span class="keyword">type</span> <a href="#t:PartialModIface">PartialModIface</a> = <a href="GHC-Driver-Types.html#t:ModIface_" title="GHC.Driver.Types">ModIface_</a> 'ModIfaceCore</li><li class="src short"><span class="keyword">data</span> <a href="#t:ModIface_">ModIface_</a> (phase :: ModIfacePhase) = <a href="#v:ModIface">ModIface</a> {<ul class="subs"><li><a href="#v:mi_module">mi_module</a> :: !<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li><a href="#v:mi_sig_of">mi_sig_of</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>)</li><li><a href="#v:mi_hsc_src">mi_hsc_src</a> :: !<a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></li><li><a href="#v:mi_deps">mi_deps</a> :: <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a></li><li><a href="#v:mi_usages">mi_usages</a> :: [<a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a>]</li><li><a href="#v:mi_exports">mi_exports</a> :: ![<a href="GHC-Driver-Types.html#t:IfaceExport" title="GHC.Driver.Types">IfaceExport</a>]</li><li><a href="#v:mi_used_th">mi_used_th</a> :: !<a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li><a href="#v:mi_fixities">mi_fixities</a> :: [(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a>)]</li><li><a href="#v:mi_warns">mi_warns</a> :: <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a></li><li><a href="#v:mi_anns">mi_anns</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceAnnotation" title="GHC.Iface.Syntax">IfaceAnnotation</a>]</li><li><a href="#v:mi_decls">mi_decls</a> :: [IfaceDeclExts phase]</li><li><a href="#v:mi_globals">mi_globals</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a>)</li><li><a href="#v:mi_insts">mi_insts</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceClsInst" title="GHC.Iface.Syntax">IfaceClsInst</a>]</li><li><a href="#v:mi_fam_insts">mi_fam_insts</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceFamInst" title="GHC.Iface.Syntax">IfaceFamInst</a>]</li><li><a href="#v:mi_rules">mi_rules</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceRule" title="GHC.Iface.Syntax">IfaceRule</a>]</li><li><a href="#v:mi_hpc">mi_hpc</a> :: !<a href="GHC-Driver-Types.html#t:AnyHpcUsage" title="GHC.Driver.Types">AnyHpcUsage</a></li><li><a href="#v:mi_trust">mi_trust</a> :: !<a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a></li><li><a href="#v:mi_trust_pkg">mi_trust_pkg</a> :: !<a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li><a href="#v:mi_complete_sigs">mi_complete_sigs</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceCompleteMatch" title="GHC.Iface.Syntax">IfaceCompleteMatch</a>]</li><li><a href="#v:mi_doc_hdr">mi_doc_hdr</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Hs-Doc.html#t:HsDocString" title="GHC.Hs.Doc">HsDocString</a></li><li><a href="#v:mi_decl_docs">mi_decl_docs</a> :: <a href="GHC-Hs-Doc.html#t:DeclDocMap" title="GHC.Hs.Doc">DeclDocMap</a></li><li><a href="#v:mi_arg_docs">mi_arg_docs</a> :: <a href="GHC-Hs-Doc.html#t:ArgDocMap" title="GHC.Hs.Doc">ArgDocMap</a></li><li><a href="#v:mi_final_exts">mi_final_exts</a> :: !(IfaceBackendExts phase)</li><li><a href="#v:mi_ext_fields">mi_ext_fields</a> :: <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:ModIfaceBackend">ModIfaceBackend</a> = <a href="#v:ModIfaceBackend">ModIfaceBackend</a> {<ul class="subs"><li><a href="#v:mi_iface_hash">mi_iface_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:mi_mod_hash">mi_mod_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:mi_flag_hash">mi_flag_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:mi_opt_hash">mi_opt_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:mi_hpc_hash">mi_hpc_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:mi_plugin_hash">mi_plugin_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:mi_orphan">mi_orphan</a> :: !<a href="GHC-Driver-Types.html#t:WhetherHasOrphans" title="GHC.Driver.Types">WhetherHasOrphans</a></li><li><a href="#v:mi_finsts">mi_finsts</a> :: !WhetherHasFamInst</li><li><a href="#v:mi_exp_hash">mi_exp_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:mi_orphan_hash">mi_orphan_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:mi_warn_fn">mi_warn_fn</a> :: !(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a>)</li><li><a href="#v:mi_fix_fn">mi_fix_fn</a> :: !(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a>)</li><li><a href="#v:mi_hash_fn">mi_hash_fn</a> :: !(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>))</li></ul>}</li><li class="src short"><a href="#v:mkIfaceWarnCache">mkIfaceWarnCache</a> :: <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a></li><li class="src short"><a href="#v:mkIfaceHashCache">mkIfaceHashCache</a> :: [(<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>, <a href="GHC-Iface-Syntax.html#t:IfaceDecl" title="GHC.Iface.Syntax">IfaceDecl</a>)] -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>)</li><li class="src short"><a href="#v:mkIfaceFixCache">mkIfaceFixCache</a> :: [(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a>)] -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a></li><li class="src short"><a href="#v:emptyIfaceWarnCache">emptyIfaceWarnCache</a> :: <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a></li><li class="src short"><a href="#v:mi_boot">mi_boot</a> :: <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a></li><li class="src short"><a href="#v:mi_fix">mi_fix</a> :: <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a></li><li class="src short"><a href="#v:mi_semantic_module">mi_semantic_module</a> :: <a href="GHC-Driver-Types.html#t:ModIface_" title="GHC.Driver.Types">ModIface_</a> a -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li class="src short"><a href="#v:mi_free_holes">mi_free_holes</a> :: <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Types-Unique-DSet.html#t:UniqDSet" title="GHC.Types.Unique.DSet">UniqDSet</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></li><li class="src short"><a href="#v:renameFreeHoles">renameFreeHoles</a> :: <a href="GHC-Types-Unique-DSet.html#t:UniqDSet" title="GHC.Types.Unique.DSet">UniqDSet</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; [(<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>, <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>)] -&gt; <a href="GHC-Types-Unique-DSet.html#t:UniqDSet" title="GHC.Types.Unique.DSet">UniqDSet</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:FixityEnv">FixityEnv</a> = <a href="GHC-Types-Name-Env.html#t:NameEnv" title="GHC.Types.Name.Env">NameEnv</a> <a href="GHC-Driver-Types.html#t:FixItem" title="GHC.Driver.Types">FixItem</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:FixItem">FixItem</a> = <a href="#v:FixItem">FixItem</a> <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a></li><li class="src short"><a href="#v:lookupFixity">lookupFixity</a> :: <a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a></li><li class="src short"><a href="#v:emptyFixityEnv">emptyFixityEnv</a> :: <a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:TyThing">TyThing</a><ul class="subs"><li>= <a href="#v:AnId">AnId</a> <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a></li><li>| <a href="#v:AConLike">AConLike</a> <a href="GHC-Core-ConLike.html#t:ConLike" title="GHC.Core.ConLike">ConLike</a></li><li>| <a href="#v:ATyCon">ATyCon</a> <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a></li><li>| <a href="#v:ACoAxiom">ACoAxiom</a> (<a href="GHC-Core-Coercion-Axiom.html#t:CoAxiom" title="GHC.Core.Coercion.Axiom">CoAxiom</a> <a href="GHC-Core-Coercion-Axiom.html#t:Branched" title="GHC.Core.Coercion.Axiom">Branched</a>)</li></ul></li><li class="src short"><a href="#v:tyThingAvailInfo">tyThingAvailInfo</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; [<a href="GHC-Types-Avail.html#t:AvailInfo" title="GHC.Types.Avail">AvailInfo</a>]</li><li class="src short"><a href="#v:tyThingTyCon">tyThingTyCon</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a></li><li class="src short"><a href="#v:tyThingDataCon">tyThingDataCon</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a></li><li class="src short"><a href="#v:tyThingConLike">tyThingConLike</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Core-ConLike.html#t:ConLike" title="GHC.Core.ConLike">ConLike</a></li><li class="src short"><a href="#v:tyThingId">tyThingId</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a></li><li class="src short"><a href="#v:tyThingCoAxiom">tyThingCoAxiom</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Core-Coercion-Axiom.html#t:CoAxiom" title="GHC.Core.Coercion.Axiom">CoAxiom</a> <a href="GHC-Core-Coercion-Axiom.html#t:Branched" title="GHC.Core.Coercion.Axiom">Branched</a></li><li class="src short"><a href="#v:tyThingParent_maybe">tyThingParent_maybe</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></li><li class="src short"><a href="#v:tyThingsTyCoVars">tyThingsTyCoVars</a> :: [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Types-Var-Set.html#t:TyCoVarSet" title="GHC.Types.Var.Set">TyCoVarSet</a></li><li class="src short"><a href="#v:implicitTyThings">implicitTyThings</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>]</li><li class="src short"><a href="#v:implicitTyConThings">implicitTyConThings</a> :: <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>]</li><li class="src short"><a href="#v:implicitClassThings">implicitClassThings</a> :: <a href="GHC-Core-Class.html#t:Class" title="GHC.Core.Class">Class</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>]</li><li class="src short"><a href="#v:isImplicitTyThing">isImplicitTyThing</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:TypeEnv">TypeEnv</a> = <a href="GHC-Types-Name-Env.html#t:NameEnv" title="GHC.Types.Name.Env">NameEnv</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></li><li class="src short"><a href="#v:lookupType">lookupType</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Driver-Types.html#t:PackageTypeEnv" title="GHC.Driver.Types">PackageTypeEnv</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></li><li class="src short"><a href="#v:lookupTypeHscEnv">lookupTypeHscEnv</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>)</li><li class="src short"><a href="#v:mkTypeEnv">mkTypeEnv</a> :: [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li class="src short"><a href="#v:emptyTypeEnv">emptyTypeEnv</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li class="src short"><a href="#v:typeEnvFromEntities">typeEnvFromEntities</a> :: [<a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a>] -&gt; [<a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a>] -&gt; [<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li class="src short"><a href="#v:mkTypeEnvWithImplicits">mkTypeEnvWithImplicits</a> :: [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li class="src short"><a href="#v:extendTypeEnv">extendTypeEnv</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li class="src short"><a href="#v:extendTypeEnvList">extendTypeEnvList</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li class="src short"><a href="#v:extendTypeEnvWithIds">extendTypeEnvWithIds</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li class="src short"><a href="#v:plusTypeEnv">plusTypeEnv</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></li><li class="src short"><a href="#v:lookupTypeEnv">lookupTypeEnv</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></li><li class="src short"><a href="#v:typeEnvElts">typeEnvElts</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>]</li><li class="src short"><a href="#v:typeEnvTyCons">typeEnvTyCons</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a>]</li><li class="src short"><a href="#v:typeEnvIds">typeEnvIds</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a>]</li><li class="src short"><a href="#v:typeEnvPatSyns">typeEnvPatSyns</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-PatSyn.html#t:PatSyn" title="GHC.Core.PatSyn">PatSyn</a>]</li><li class="src short"><a href="#v:typeEnvDataCons">typeEnvDataCons</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a>]</li><li class="src short"><a href="#v:typeEnvCoAxioms">typeEnvCoAxioms</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-Coercion-Axiom.html#t:CoAxiom" title="GHC.Core.Coercion.Axiom">CoAxiom</a> <a href="GHC-Core-Coercion-Axiom.html#t:Branched" title="GHC.Core.Coercion.Axiom">Branched</a>]</li><li class="src short"><a href="#v:typeEnvClasses">typeEnvClasses</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-Class.html#t:Class" title="GHC.Core.Class">Class</a>]</li><li class="src short"><span class="keyword">class</span> <a href="GHC-Prelude.html#t:Monad" title="GHC.Prelude">Monad</a> m =&gt; <a href="#t:MonadThings">MonadThings</a> m <span class="keyword">where</span><ul class="subs"><li><a href="#v:lookupThing">lookupThing</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; m <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></li><li><a href="#v:lookupId">lookupId</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; m <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a></li><li><a href="#v:lookupDataCon">lookupDataCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; m <a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a></li><li><a href="#v:lookupTyCon">lookupTyCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; m <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a></li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:WhetherHasOrphans">WhetherHasOrphans</a> = <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:IsBootInterface">IsBootInterface</a><ul class="subs"><li>= <a href="#v:NotBoot">NotBoot</a></li><li>| <a href="#v:IsBoot">IsBoot</a></li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Usage">Usage</a><ul class="subs"><li>= <a href="#v:UsagePackageModule">UsagePackageModule</a> { <ul class="subs"><li><a href="#v:usg_mod">usg_mod</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li><a href="#v:usg_mod_hash">usg_mod_hash</a> :: <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:usg_safe">usg_safe</a> :: <a href="GHC-Driver-Types.html#t:IsSafeImport" title="GHC.Driver.Types">IsSafeImport</a></li></ul> }</li><li>| <a href="#v:UsageHomeModule">UsageHomeModule</a> { <ul class="subs"><li><a href="#v:usg_mod_name">usg_mod_name</a> :: <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></li><li><a href="#v:usg_mod_hash">usg_mod_hash</a> :: <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:usg_entities">usg_entities</a> :: [(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>)]</li><li><a href="#v:usg_exports">usg_exports</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li><li><a href="#v:usg_safe">usg_safe</a> :: <a href="GHC-Driver-Types.html#t:IsSafeImport" title="GHC.Driver.Types">IsSafeImport</a></li></ul> }</li><li>| <a href="#v:UsageFile">UsageFile</a> { <ul class="subs"><li><a href="#v:usg_file_path">usg_file_path</a> :: <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li><a href="#v:usg_file_hash">usg_file_hash</a> :: <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li></ul> }</li><li>| <a href="#v:UsageMergedRequirement">UsageMergedRequirement</a> { <ul class="subs"><li><a href="#v:usg_mod">usg_mod</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li><a href="#v:usg_mod_hash">usg_mod_hash</a> :: <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></li></ul> }</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Dependencies">Dependencies</a> = <a href="#v:Deps">Deps</a> {<ul class="subs"><li><a href="#v:dep_mods">dep_mods</a> :: [<a href="GHC-Unit-Types.html#t:ModuleNameWithIsBoot" title="GHC.Unit.Types">ModuleNameWithIsBoot</a>]</li><li><a href="#v:dep_pkgs">dep_pkgs</a> :: [(<a href="GHC-Unit-Types.html#t:UnitId" title="GHC.Unit.Types">UnitId</a>, <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>)]</li><li><a href="#v:dep_orphs">dep_orphs</a> :: [<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>]</li><li><a href="#v:dep_finsts">dep_finsts</a> :: [<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>]</li><li><a href="#v:dep_plgins">dep_plgins</a> :: [<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>]</li></ul>}</li><li class="src short"><a href="#v:noDependencies">noDependencies</a> :: <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a></li><li class="src short"><a href="#v:updNameCache">updNameCache</a> :: <a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Types-Name-Cache.html#t:NameCache" title="GHC.Types.Name.Cache">NameCache</a> -&gt; (<a href="GHC-Types-Name-Cache.html#t:NameCache" title="GHC.Types.Name.Cache">NameCache</a> -&gt; (<a href="GHC-Types-Name-Cache.html#t:NameCache" title="GHC.Types.Name.Cache">NameCache</a>, c)) -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> c</li><li class="src short"><span class="keyword">type</span> <a href="#t:IfaceExport">IfaceExport</a> = <a href="GHC-Types-Avail.html#t:AvailInfo" title="GHC.Types.Avail">AvailInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:Warnings">Warnings</a><ul class="subs"><li>= <a href="#v:NoWarnings">NoWarnings</a></li><li>| <a href="#v:WarnAll">WarnAll</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a></li><li>| <a href="#v:WarnSome">WarnSome</a> [(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a>)]</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:WarningTxt">WarningTxt</a><ul class="subs"><li>= <a href="#v:WarningTxt">WarningTxt</a> (<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Types-Basic.html#t:SourceText" title="GHC.Types.Basic">SourceText</a>) [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Types-Basic.html#t:StringLiteral" title="GHC.Types.Basic">StringLiteral</a>]</li><li>| <a href="#v:DeprecatedTxt">DeprecatedTxt</a> (<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Types-Basic.html#t:SourceText" title="GHC.Types.Basic">SourceText</a>) [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Types-Basic.html#t:StringLiteral" title="GHC.Types.Basic">StringLiteral</a>]</li></ul></li><li class="src short"><a href="#v:plusWarns">plusWarns</a> :: <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:Linkable">Linkable</a> = <a href="#v:LM">LM</a> {<ul class="subs"><li><a href="#v:linkableTime">linkableTime</a> :: <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></li><li><a href="#v:linkableModule">linkableModule</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></li><li><a href="#v:linkableUnlinked">linkableUnlinked</a> :: [<a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a>]</li></ul>}</li><li class="src short"><a href="#v:isObjectLinkable">isObjectLinkable</a> :: <a href="GHC-Driver-Types.html#t:Linkable" title="GHC.Driver.Types">Linkable</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><a href="#v:linkableObjs">linkableObjs</a> :: <a href="GHC-Driver-Types.html#t:Linkable" title="GHC.Driver.Types">Linkable</a> -&gt; [<a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>]</li><li class="src short"><span class="keyword">data</span> <a href="#t:Unlinked">Unlinked</a><ul class="subs"><li>= <a href="#v:DotO">DotO</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li>| <a href="#v:DotA">DotA</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li>| <a href="#v:DotDLL">DotDLL</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li>| <a href="#v:BCOs">BCOs</a> <a href="GHC-Driver-Types.html#t:CompiledByteCode" title="GHC.Driver.Types">CompiledByteCode</a> [<a href="GHC-Driver-Types.html#t:SptEntry" title="GHC.Driver.Types">SptEntry</a>]</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CompiledByteCode">CompiledByteCode</a></li><li class="src short"><a href="#v:isObject">isObject</a> :: <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><a href="#v:nameOfObject">nameOfObject</a> :: <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></li><li class="src short"><a href="#v:isInterpretable">isInterpretable</a> :: <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><a href="#v:byteCodeOfObject">byteCodeOfObject</a> :: <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Driver-Types.html#t:CompiledByteCode" title="GHC.Driver.Types">CompiledByteCode</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:HpcInfo">HpcInfo</a><ul class="subs"><li>= <a href="#v:HpcInfo">HpcInfo</a> { <ul class="subs"><li><a href="#v:hpcInfoTickCount">hpcInfoTickCount</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a></li><li><a href="#v:hpcInfoHash">hpcInfoHash</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a></li></ul> }</li><li>| <a href="#v:NoHpcInfo">NoHpcInfo</a> { <ul class="subs"><li><a href="#v:hpcUsed">hpcUsed</a> :: <a href="GHC-Driver-Types.html#t:AnyHpcUsage" title="GHC.Driver.Types">AnyHpcUsage</a></li></ul> }</li></ul></li><li class="src short"><a href="#v:emptyHpcInfo">emptyHpcInfo</a> :: <a href="GHC-Driver-Types.html#t:AnyHpcUsage" title="GHC.Driver.Types">AnyHpcUsage</a> -&gt; <a href="GHC-Driver-Types.html#t:HpcInfo" title="GHC.Driver.Types">HpcInfo</a></li><li class="src short"><a href="#v:isHpcUsed">isHpcUsed</a> :: <a href="GHC-Driver-Types.html#t:HpcInfo" title="GHC.Driver.Types">HpcInfo</a> -&gt; <a href="GHC-Driver-Types.html#t:AnyHpcUsage" title="GHC.Driver.Types">AnyHpcUsage</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:AnyHpcUsage">AnyHpcUsage</a> = <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:ModBreaks">ModBreaks</a> = <a href="#v:ModBreaks">ModBreaks</a> {<ul class="subs"><li><a href="#v:modBreaks_flags">modBreaks_flags</a> :: <a href="../ghci/GHCi-RemoteTypes.html#t:ForeignRef" title="GHCi.RemoteTypes">ForeignRef</a> <a href="../ghci/GHCi-BreakArray.html#t:BreakArray" title="GHCi.BreakArray">BreakArray</a></li><li><a href="#v:modBreaks_locs">modBreaks_locs</a> :: !(<a href="../array/Data-Array.html#t:Array" title="Data.Array">Array</a> <a href="GHC-ByteCode-Types.html#t:BreakIndex" title="GHC.ByteCode.Types">BreakIndex</a> <a href="GHC-Types-SrcLoc.html#t:SrcSpan" title="GHC.Types.SrcLoc">SrcSpan</a>)</li><li><a href="#v:modBreaks_vars">modBreaks_vars</a> :: !(<a href="../array/Data-Array.html#t:Array" title="Data.Array">Array</a> <a href="GHC-ByteCode-Types.html#t:BreakIndex" title="GHC.ByteCode.Types">BreakIndex</a> [<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>])</li><li><a href="#v:modBreaks_decls">modBreaks_decls</a> :: !(<a href="../array/Data-Array.html#t:Array" title="Data.Array">Array</a> <a href="GHC-ByteCode-Types.html#t:BreakIndex" title="GHC.ByteCode.Types">BreakIndex</a> [<a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a>])</li><li><a href="#v:modBreaks_ccs">modBreaks_ccs</a> :: !(<a href="../array/Data-Array.html#t:Array" title="Data.Array">Array</a> <a href="GHC-ByteCode-Types.html#t:BreakIndex" title="GHC.ByteCode.Types">BreakIndex</a> (<a href="../ghci/GHCi-RemoteTypes.html#t:RemotePtr" title="GHCi.RemoteTypes">RemotePtr</a> <a href="../base/GHC-Stack-CCS.html#t:CostCentre" title="GHC.Stack.CCS">CostCentre</a>))</li><li><a href="#v:modBreaks_breakInfo">modBreaks_breakInfo</a> :: <a href="../containers/Data-IntMap-Strict-Internal.html#t:IntMap" title="Data.IntMap.Strict.Internal">IntMap</a> <a href="GHC-ByteCode-Types.html#t:CgBreakInfo" title="GHC.ByteCode.Types">CgBreakInfo</a></li></ul>}</li><li class="src short"><a href="#v:emptyModBreaks">emptyModBreaks</a> :: <a href="GHC-Driver-Types.html#t:ModBreaks" title="GHC.Driver.Types">ModBreaks</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:IfaceTrustInfo">IfaceTrustInfo</a></li><li class="src short"><a href="#v:getSafeMode">getSafeMode</a> :: <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> -&gt; <a href="GHC-Driver-Session.html#t:SafeHaskellMode" title="GHC.Driver.Session">SafeHaskellMode</a></li><li class="src short"><a href="#v:setSafeMode">setSafeMode</a> :: <a href="GHC-Driver-Session.html#t:SafeHaskellMode" title="GHC.Driver.Session">SafeHaskellMode</a> -&gt; <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a></li><li class="src short"><a href="#v:noIfaceTrustInfo">noIfaceTrustInfo</a> :: <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a></li><li class="src short"><a href="#v:trustInfoToNum">trustInfoToNum</a> :: <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> -&gt; <a href="../base/Data-Word.html#t:Word8" title="Data.Word">Word8</a></li><li class="src short"><a href="#v:numToTrustInfo">numToTrustInfo</a> :: <a href="../base/Data-Word.html#t:Word8" title="Data.Word">Word8</a> -&gt; <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:IsSafeImport">IsSafeImport</a> = <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:HsParsedModule">HsParsedModule</a> = <a href="#v:HsParsedModule">HsParsedModule</a> {<ul class="subs"><li><a href="#v:hpm_module">hpm_module</a> :: <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Hs.html#t:HsModule" title="GHC.Hs">HsModule</a></li><li><a href="#v:hpm_src_files">hpm_src_files</a> :: [<a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>]</li><li><a href="#v:hpm_annotations">hpm_annotations</a> :: <a href="GHC-Parser-Annotation.html#t:ApiAnns" title="GHC.Parser.Annotation">ApiAnns</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:SourceError">SourceError</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:GhcApiError">GhcApiError</a></li><li class="src short"><a href="#v:mkSrcErr">mkSrcErr</a> :: <a href="GHC-Utils-Error.html#t:ErrorMessages" title="GHC.Utils.Error">ErrorMessages</a> -&gt; <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a></li><li class="src short"><a href="#v:srcErrorMessages">srcErrorMessages</a> :: <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> -&gt; <a href="GHC-Utils-Error.html#t:ErrorMessages" title="GHC.Utils.Error">ErrorMessages</a></li><li class="src short"><a href="#v:mkApiErr">mkApiErr</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> -&gt; <a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a></li><li class="src short"><a href="#v:throwOneError">throwOneError</a> :: <a href="GHC-Utils-Monad.html#t:MonadIO" title="GHC.Utils.Monad">MonadIO</a> io =&gt; <a href="GHC-Utils-Error.html#t:ErrMsg" title="GHC.Utils.Error">ErrMsg</a> -&gt; io a</li><li class="src short"><a href="#v:throwErrors">throwErrors</a> :: <a href="GHC-Utils-Monad.html#t:MonadIO" title="GHC.Utils.Monad">MonadIO</a> io =&gt; <a href="GHC-Utils-Error.html#t:ErrorMessages" title="GHC.Utils.Error">ErrorMessages</a> -&gt; io a</li><li class="src short"><a href="#v:handleSourceError">handleSourceError</a> :: <a href="../exceptions/Control-Monad-Catch.html#t:MonadCatch" title="Control.Monad.Catch">MonadCatch</a> m =&gt; (<a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> -&gt; m a) -&gt; m a -&gt; m a</li><li class="src short"><a href="#v:handleFlagWarnings">handleFlagWarnings</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; [<a href="GHC-Driver-CmdLine.html#t:Warn" title="GHC.Driver.CmdLine">Warn</a>] -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> ()</li><li class="src short"><a href="#v:printOrThrowWarnings">printOrThrowWarnings</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Data-Bag.html#t:Bag" title="GHC.Data.Bag">Bag</a> <a href="GHC-Utils-Error.html#t:WarnMsg" title="GHC.Utils.Error">WarnMsg</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> ()</li><li class="src short"><span class="keyword">data</span> <a href="#t:CompleteMatch">CompleteMatch</a> = <a href="#v:CompleteMatch">CompleteMatch</a> {<ul class="subs"><li><a href="#v:completeMatchConLikes">completeMatchConLikes</a> :: [<a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a>]</li><li><a href="#v:completeMatchTyCon">completeMatchTyCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:CompleteMatchMap">CompleteMatchMap</a> = <a href="GHC-Types-Unique-FM.html#t:UniqFM" title="GHC.Types.Unique.FM">UniqFM</a> <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>]</li><li class="src short"><a href="#v:mkCompleteMatchMap">mkCompleteMatchMap</a> :: [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>] -&gt; <a href="GHC-Driver-Types.html#t:CompleteMatchMap" title="GHC.Driver.Types">CompleteMatchMap</a></li><li class="src short"><a href="#v:extendCompleteMatchMap">extendCompleteMatchMap</a> :: <a href="GHC-Driver-Types.html#t:CompleteMatchMap" title="GHC.Driver.Types">CompleteMatchMap</a> -&gt; [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>] -&gt; <a href="GHC-Driver-Types.html#t:CompleteMatchMap" title="GHC.Driver.Types">CompleteMatchMap</a></li><li class="src short"><span class="keyword">newtype</span> <a href="#t:ExtensibleFields">ExtensibleFields</a> = <a href="#v:ExtensibleFields">ExtensibleFields</a> {<ul class="subs"><li><a href="#v:getExtensibleFields">getExtensibleFields</a> :: <a href="../containers/Data-Map-Strict.html#t:Map" title="Data.Map.Strict">Map</a> <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> <a href="GHC-Utils-Binary.html#t:BinData" title="GHC.Utils.Binary">BinData</a></li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:FieldName">FieldName</a> = <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a></li><li class="src short"><a href="#v:emptyExtensibleFields">emptyExtensibleFields</a> :: <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a></li><li class="src short"><a href="#v:readField">readField</a> :: <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> a =&gt; <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> a)</li><li class="src short"><a href="#v:readIfaceField">readIfaceField</a> :: <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> a =&gt; <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> a)</li><li class="src short"><a href="#v:readIfaceFieldWith">readIfaceFieldWith</a> :: <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; (<a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> a) -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> a)</li><li class="src short"><a href="#v:writeField">writeField</a> :: <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> a =&gt; <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; a -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a></li><li class="src short"><a href="#v:writeIfaceField">writeIfaceField</a> :: <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> a =&gt; <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; a -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></li><li class="src short"><a href="#v:writeIfaceFieldWith">writeIfaceFieldWith</a> :: <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; (<a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> ()) -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></li><li class="src short"><a href="#v:deleteField">deleteField</a> :: <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a></li><li class="src short"><a href="#v:deleteIfaceField">deleteIfaceField</a> :: <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></li></ul></details></div><div id="interface"><a href="#g:1" id="g:1"><h1>compilation state</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:HscEnv" class="def">HscEnv</a> <a href="src/GHC.Driver.Types.html#HscEnv" class="link">Source</a> <a href="#t:HscEnv" class="selflink">#</a></p><div class="doc"><p>HscEnv is like <code>Session</code>, except that some of the fields are immutable.
 An HscEnv is used to compile a single module from plain Haskell source
 code (after preprocessing) to either C, assembly or C--. It's also used
 to store the dynamic linker state to allow for multiple linkers in the
 same address space.
 Things like the module graph don't change during a single compilation.</p><p>Historical note: &quot;hsc&quot; used to be the name of the compiler binary,
 when there was a separate driver and compiler.  To compile a single
 module, the driver would invoke hsc on the source code... so nowadays
 we think of hsc as the layer of the compiler that deals with compiling
 a single module.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:HscEnv" class="def">HscEnv</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:hsc_dflags" class="def">hsc_dflags</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></dfn><div class="doc"><p>The dynamic flag settings</p></div></li><li><dfn class="src"><a id="v:hsc_targets" class="def">hsc_targets</a> :: [<a href="GHC-Driver-Types.html#t:Target" title="GHC.Driver.Types">Target</a>]</dfn><div class="doc"><p>The targets (or roots) of the current session</p></div></li><li><dfn class="src"><a id="v:hsc_mod_graph" class="def">hsc_mod_graph</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a></dfn><div class="doc"><p>The module graph of the current session</p></div></li><li><dfn class="src"><a id="v:hsc_IC" class="def">hsc_IC</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a></dfn><div class="doc"><p>The context for evaluating interactive statements</p></div></li><li><dfn class="src"><a id="v:hsc_HPT" class="def">hsc_HPT</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></dfn><div class="doc"><p>The home package table describes already-compiled
 home-package modules, <em>excluding</em> the module we
 are compiling right now.
 (In one-shot mode the current module is the only
 home-package module, so hsc_HPT is empty.  All other
 modules count as &quot;external-package&quot; modules.
 However, even in GHCi mode, hi-boot interfaces are
 demand-loaded into the external-package table.)</p><p><code><a href="GHC-Driver-Types.html#v:hsc_HPT" title="GHC.Driver.Types">hsc_HPT</a></code> is not mutable because we only demand-load
 external packages; the home package is eagerly
 loaded, module by module, by the compilation manager.</p><p>The HPT may contain modules compiled earlier by <code>--make</code>
 but not actually below the current module in the dependency
 graph.</p><p>(This changes a previous invariant: changed Jan 05.)</p></div></li><li><dfn class="src"><a id="v:hsc_EPS" class="def">hsc_EPS</a> :: !(<a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Driver-Types.html#t:ExternalPackageState" title="GHC.Driver.Types">ExternalPackageState</a>)</dfn><div class="doc"><p>Information about the currently loaded external packages.
 This is mutable because packages will be demand-loaded during
 a compilation run as required.</p></div></li><li><dfn class="src"><a id="v:hsc_NC" class="def">hsc_NC</a> :: !(<a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Types-Name-Cache.html#t:NameCache" title="GHC.Types.Name.Cache">NameCache</a>)</dfn><div class="doc"><p>As with <code><a href="GHC-Driver-Types.html#v:hsc_EPS" title="GHC.Driver.Types">hsc_EPS</a></code>, this is side-effected by compiling to
 reflect sucking in interface files.  They cache the state of
 external interface files, in effect.</p></div></li><li><dfn class="src"><a id="v:hsc_FC" class="def">hsc_FC</a> :: !(<a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Driver-Types.html#t:FinderCache" title="GHC.Driver.Types">FinderCache</a>)</dfn><div class="doc"><p>The cached result of performing finding in the file system</p></div></li><li><dfn class="src"><a id="v:hsc_type_env_var" class="def">hsc_type_env_var</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>, <a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a>)</dfn><div class="doc"><p>Used for one-shot compilation only, to initialise
 the <code>IfGblEnv</code>. See <code><a href="GHC-Tc-Utils.html#v:tcg_type_env_var" title="GHC.Tc.Utils">tcg_type_env_var</a></code> for
 <code><a href="GHC-Tc-Utils.html#v:TcGblEnv" title="GHC.Tc.Utils">TcGblEnv</a></code>.  See also Note [hsc_type_env_var hack]</p></div></li><li><dfn class="src"><a id="v:hsc_interp" class="def">hsc_interp</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Runtime-Interpreter-Types.html#t:Interp" title="GHC.Runtime.Interpreter.Types">Interp</a></dfn><div class="doc"><p>target code interpreter (if any) to use for TH and GHCi.
 See Note [Target code interpreter]</p></div></li><li><dfn class="src"><a id="v:hsc_dynLinker" class="def">hsc_dynLinker</a> :: <a href="GHC-Runtime-Linker-Types.html#t:DynLinker" title="GHC.Runtime.Linker.Types">DynLinker</a></dfn><div class="doc"><p>dynamic linker.</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><a id="v:hscEPS" class="def">hscEPS</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ExternalPackageState" title="GHC.Driver.Types">ExternalPackageState</a> <a href="src/GHC.Driver.Types.html#hscEPS" class="link">Source</a> <a href="#v:hscEPS" class="selflink">#</a></p><div class="doc"><p>Retrieve the ExternalPackageState cache.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:FinderCache" class="def">FinderCache</a> = <a href="GHC-Unit-Module-Env.html#t:InstalledModuleEnv" title="GHC.Unit.Module.Env">InstalledModuleEnv</a> <a href="GHC-Driver-Types.html#t:InstalledFindResult" title="GHC.Driver.Types">InstalledFindResult</a> <a href="src/GHC.Driver.Types.html#FinderCache" class="link">Source</a> <a href="#t:FinderCache" class="selflink">#</a></p><div class="doc"><p>The <code><a href="GHC-Driver-Types.html#t:FinderCache" title="GHC.Driver.Types">FinderCache</a></code> maps modules to the result of
 searching for that module. It records the results of searching for
 modules along the search path. On <code>:load</code>, we flush the entire
 contents of this cache.</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:FindResult" class="def">FindResult</a> <a href="src/GHC.Driver.Types.html#FindResult" class="link">Source</a> <a href="#t:FindResult" class="selflink">#</a></p><div class="doc"><p>The result of searching for an imported module.</p><p>NB: FindResult manages both user source-import lookups
 (which can result in <code><a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></code>) as well as direct imports
 for interfaces (which always result in <code><a href="GHC-Unit-Types.html#t:InstalledModule" title="GHC.Unit.Types">InstalledModule</a></code>).</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:Found" class="def">Found</a> <a href="GHC-Unit-Module-Location.html#t:ModLocation" title="GHC.Unit.Module.Location">ModLocation</a> <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></td><td class="doc"><p>The module was found</p></td></tr><tr><td class="src"><a id="v:NoPackage" class="def">NoPackage</a> <a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a></td><td class="doc"><p>The requested unit was not found</p></td></tr><tr><td class="src"><a id="v:FoundMultiple" class="def">FoundMultiple</a> [(<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>, <a href="GHC-Unit-State.html#t:ModuleOrigin" title="GHC.Unit.State">ModuleOrigin</a>)]</td><td class="doc"><p>_Error_: both in multiple packages</p></td></tr><tr><td class="src"><a id="v:NotFound" class="def">NotFound</a></td><td class="doc"><p>Not found</p></td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:fr_paths" class="def">fr_paths</a> :: [<a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>]</dfn><div class="doc"><p>Places where I looked</p></div></li><li><dfn class="src"><a id="v:fr_pkg" class="def">fr_pkg</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a></dfn><div class="doc"><p>Just p =&gt; module is in this unit's
   manifest, but couldn't find the
   .hi file</p></div></li><li><dfn class="src"><a id="v:fr_mods_hidden" class="def">fr_mods_hidden</a> :: [<a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a>]</dfn><div class="doc"><p>Module is in these units,
   but the *module* is hidden</p></div></li><li><dfn class="src"><a id="v:fr_pkgs_hidden" class="def">fr_pkgs_hidden</a> :: [<a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a>]</dfn><div class="doc"><p>Module is in these units,
   but the *unit* is hidden</p></div></li><li><dfn class="src"><a id="v:fr_unusables" class="def">fr_unusables</a> :: [(<a href="GHC-Unit-Types.html#t:Unit" title="GHC.Unit.Types">Unit</a>, <a href="GHC-Unit-State.html#t:UnusableUnitReason" title="GHC.Unit.State">UnusableUnitReason</a>)]</dfn><div class="doc"><p>Module is in these units, but it is unusable</p></div></li><li><dfn class="src"><a id="v:fr_suggestions" class="def">fr_suggestions</a> :: [<a href="GHC-Unit-State.html#t:ModuleSuggestion" title="GHC.Unit.State">ModuleSuggestion</a>]</dfn><div class="doc"><p>Possible mis-spelled modules</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:InstalledFindResult" class="def">InstalledFindResult</a> <a href="src/GHC.Driver.Types.html#InstalledFindResult" class="link">Source</a> <a href="#t:InstalledFindResult" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:InstalledFound" class="def">InstalledFound</a> <a href="GHC-Unit-Module-Location.html#t:ModLocation" title="GHC.Unit.Module.Location">ModLocation</a> <a href="GHC-Unit-Types.html#t:InstalledModule" title="GHC.Unit.Types">InstalledModule</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:InstalledNoPackage" class="def">InstalledNoPackage</a> <a href="GHC-Unit-Types.html#t:UnitId" title="GHC.Unit.Types">UnitId</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:InstalledNotFound" class="def">InstalledNotFound</a> [<a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>] (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Unit-Types.html#t:UnitId" title="GHC.Unit.Types">UnitId</a>)</td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Target" class="def">Target</a> <a href="src/GHC.Driver.Types.html#Target" class="link">Source</a> <a href="#t:Target" class="selflink">#</a></p><div class="doc"><p>A compilation target.</p><p>A target may be supplied with the actual text of the
 module.  If so, use this instead of the file contents (this
 is for use in an IDE where the file hasn't been saved by
 the user yet).</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:Target" class="def">Target</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:targetId" class="def">targetId</a> :: !<a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a></dfn><div class="doc"><p>module or filename</p></div></li><li><dfn class="src"><a id="v:targetAllowObjCode" class="def">targetAllowObjCode</a> :: !<a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></dfn><div class="doc"><p>object code allowed?</p></div></li><li><dfn class="src"><a id="v:targetContents" class="def">targetContents</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (<a href="GHC-Driver-Types.html#t:InputFileBuffer" title="GHC.Driver.Types">InputFileBuffer</a>, <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a>))</dfn><div class="doc"><p>Optional in-memory buffer containing the source code GHC should
 use for this target instead of reading it from disk.</p><p>Since GHC version 8.10 modules which require preprocessors such as
 Literate Haskell or CPP to run are also supported.</p><p>If a corresponding source file does not exist on disk this will
 result in a <code><a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a></code> exception if <code>targetId = TargetModule _</code>
 is used. However together with <code>targetId = TargetFile _</code> GHC will
 not complain about the file missing.</p></div></li></ul></div></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:Target">Instances</h4><details id="i:Target" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Target:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:Target" title="GHC.Driver.Types">Target</a></span> <a href="src/GHC.Driver.Types.html#line-603" class="link">Source</a> <a href="#t:Target" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Target:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:Target" title="GHC.Driver.Types">Target</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:Target" title="GHC.Driver.Types">Target</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:TargetId" class="def">TargetId</a> <a href="src/GHC.Driver.Types.html#TargetId" class="link">Source</a> <a href="#t:TargetId" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:TargetModule" class="def">TargetModule</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></td><td class="doc"><p>A module name: search for the file</p></td></tr><tr><td class="src"><a id="v:TargetFile" class="def">TargetFile</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Phases.html#t:Phase" title="GHC.Driver.Phases">Phase</a>)</td><td class="doc"><p>A filename: preprocess &amp; parse it to find the module name.
 If specified, the Phase indicates how to compile this file
 (which phase to start from).  Nothing indicates the starting phase
 should be determined from the suffix of the filename.</p></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:TargetId">Instances</h4><details id="i:TargetId" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:TargetId:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a></span> <a href="src/GHC.Driver.Types.html#line-610" class="link">Source</a> <a href="#t:TargetId" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:TargetId:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:TargetId:Eq:2"></span> <a href="GHC-Prelude.html#t:Eq" title="GHC.Prelude">Eq</a> <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a></span> <a href="src/GHC.Driver.Types.html#line-595" class="link">Source</a> <a href="#t:TargetId" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:TargetId:Eq:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a> -&gt; <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a> -&gt; <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:InputFileBuffer" class="def">InputFileBuffer</a> = <a href="GHC-Data-StringBuffer.html#t:StringBuffer" title="GHC.Data.StringBuffer">StringBuffer</a> <a href="src/GHC.Driver.Types.html#InputFileBuffer" class="link">Source</a> <a href="#t:InputFileBuffer" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:pprTarget" class="def">pprTarget</a> :: <a href="GHC-Driver-Types.html#t:Target" title="GHC.Driver.Types">Target</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Driver.Types.html#pprTarget" class="link">Source</a> <a href="#v:pprTarget" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:pprTargetId" class="def">pprTargetId</a> :: <a href="GHC-Driver-Types.html#t:TargetId" title="GHC.Driver.Types">TargetId</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Driver.Types.html#pprTargetId" class="link">Source</a> <a href="#v:pprTargetId" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:HscStatus" class="def">HscStatus</a> <a href="src/GHC.Driver.Types.html#HscStatus" class="link">Source</a> <a href="#t:HscStatus" class="selflink">#</a></p><div class="doc"><p>Status of a compilation to hard-code</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:HscNotGeneratingCode" class="def">HscNotGeneratingCode</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></td><td class="doc"><p>Nothing to do.</p></td></tr><tr><td class="src"><a id="v:HscUpToDate" class="def">HscUpToDate</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></td><td class="doc"><p>Nothing to do because code already exists.</p></td></tr><tr><td class="src"><a id="v:HscUpdateBoot" class="def">HscUpdateBoot</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></td><td class="doc"><p>Update boot file result.</p></td></tr><tr><td class="src"><a id="v:HscUpdateSig" class="def">HscUpdateSig</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></td><td class="doc"><p>Generate signature file (backpack)</p></td></tr><tr><td class="src"><a id="v:HscRecomp" class="def">HscRecomp</a></td><td class="doc"><p>Recompile this module.</p></td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:hscs_guts" class="def">hscs_guts</a> :: <a href="GHC-Driver-Types.html#t:CgGuts" title="GHC.Driver.Types">CgGuts</a></dfn><div class="doc"><p>Information for the code generator.</p></div></li><li><dfn class="src"><a id="v:hscs_mod_location" class="def">hscs_mod_location</a> :: !<a href="GHC-Unit-Module-Location.html#t:ModLocation" title="GHC.Unit.Module.Location">ModLocation</a></dfn><div class="doc"><p>Module info</p></div></li><li><dfn class="src"><a id="v:hscs_partial_iface" class="def">hscs_partial_iface</a> :: !<a href="GHC-Driver-Types.html#t:PartialModIface" title="GHC.Driver.Types">PartialModIface</a></dfn><div class="doc"><p>Partial interface</p></div></li><li><dfn class="src"><a id="v:hscs_old_iface_hash" class="def">hscs_old_iface_hash</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>)</dfn><div class="doc"><p>Old interface hash for this compilation, if an old interface file
 exists. Pass to <code>hscMaybeWriteIface</code> when writing the interface to
 avoid updating the existing interface when the interface isn't
 changed.</p></div></li><li><dfn class="src"><a id="v:hscs_iface_dflags" class="def">hscs_iface_dflags</a> :: !<a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></dfn><div class="doc"><p>Generate final iface using this DynFlags.
 FIXME (osa): I don't understand why this is necessary, but I spent
 almost two days trying to figure this out and I couldn't .. perhaps
 someone who understands this code better will remove this later.</p></div></li></ul></div></td></tr></table></div></div><a href="#g:2" id="g:2"><h1>ModuleGraph</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ModuleGraph" class="def">ModuleGraph</a> <a href="src/GHC.Driver.Types.html#ModuleGraph" class="link">Source</a> <a href="#t:ModuleGraph" class="selflink">#</a></p><div class="doc"><p>A ModuleGraph contains all the nodes from the home package (only).
 There will be a node for each source module, plus a node for each hi-boot
 module.</p><p>The graph is not necessarily stored in topologically-sorted order.  Use
 <code><a href="GHC.html#v:topSortModuleGraph" title="GHC">topSortModuleGraph</a></code> and <code><a href="GHC-Data-Graph-Directed.html#v:flattenSCC" title="GHC.Data.Graph.Directed">flattenSCC</a></code> to achieve this.</p></div></div><div class="top"><p class="src"><a id="v:emptyMG" class="def">emptyMG</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> <a href="src/GHC.Driver.Types.html#emptyMG" class="link">Source</a> <a href="#v:emptyMG" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mkModuleGraph" class="def">mkModuleGraph</a> :: [<a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a>] -&gt; <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> <a href="src/GHC.Driver.Types.html#mkModuleGraph" class="link">Source</a> <a href="#v:mkModuleGraph" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:extendMG" class="def">extendMG</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> <a href="src/GHC.Driver.Types.html#extendMG" class="link">Source</a> <a href="#v:extendMG" class="selflink">#</a></p><div class="doc"><p>Add a ModSummary to ModuleGraph. Assumes that the new ModSummary is
 not an element of the ModuleGraph.</p></div></div><div class="top"><p class="src"><a id="v:mapMG" class="def">mapMG</a> :: (<a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a>) -&gt; <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> <a href="src/GHC.Driver.Types.html#mapMG" class="link">Source</a> <a href="#v:mapMG" class="selflink">#</a></p><div class="doc"><p>Map a function <code>f</code> over all the <code>ModSummaries</code>.
 To preserve invariants <code>f</code> can't change the isBoot status.</p></div></div><div class="top"><p class="src"><a id="v:mgModSummaries" class="def">mgModSummaries</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; [<a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a>] <a href="src/GHC.Driver.Types.html#mgModSummaries" class="link">Source</a> <a href="#v:mgModSummaries" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mgElemModule" class="def">mgElemModule</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#mgElemModule" class="link">Source</a> <a href="#v:mgElemModule" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mgLookupModule" class="def">mgLookupModule</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> <a href="src/GHC.Driver.Types.html#mgLookupModule" class="link">Source</a> <a href="#v:mgLookupModule" class="selflink">#</a></p><div class="doc"><p>Look up a ModSummary in the ModuleGraph</p></div></div><div class="top"><p class="src"><a id="v:needsTemplateHaskellOrQQ" class="def">needsTemplateHaskellOrQQ</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#needsTemplateHaskellOrQQ" class="link">Source</a> <a href="#v:needsTemplateHaskellOrQQ" class="selflink">#</a></p><div class="doc"><p>Determines whether a set of modules requires Template Haskell or
 Quasi Quotes</p><p>Note that if the session's <code><a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></code> enabled Template Haskell when
 <code>depanal</code> was called, then each module in the returned module graph will
 have Template Haskell enabled whether it is actually needed or not.</p></div></div><div class="top"><p class="src"><a id="v:mgBootModules" class="def">mgBootModules</a> :: <a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a> -&gt; <a href="GHC-Unit-Module-Env.html#t:ModuleSet" title="GHC.Unit.Module.Env">ModuleSet</a> <a href="src/GHC.Driver.Types.html#mgBootModules" class="link">Source</a> <a href="#v:mgBootModules" class="selflink">#</a></p></div><a href="#g:3" id="g:3"><h1>Hsc monad</h1></a><div class="top"><p class="src"><span class="keyword">newtype</span> <a id="t:Hsc" class="def">Hsc</a> a <a href="src/GHC.Driver.Types.html#Hsc" class="link">Source</a> <a href="#t:Hsc" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:Hsc" class="def">Hsc</a> (<a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Utils-Error.html#t:WarningMessages" title="GHC.Utils.Error">WarningMessages</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (a, <a href="GHC-Utils-Error.html#t:WarningMessages" title="GHC.Utils.Error">WarningMessages</a>))</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:Hsc">Instances</h4><details id="i:Hsc" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Hsc:MonadIO:1"></span> <a href="GHC-Utils-Monad.html#t:MonadIO" title="GHC.Utils.Monad">MonadIO</a> <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a></span> <a href="src/GHC.Driver.Types.html#line-287" class="link">Source</a> <a href="#t:Hsc" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Hsc:MonadIO:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:liftIO">liftIO</a> :: <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a <a href="../base/src/Control.Monad.IO.Class.html#liftIO" class="link">Source</a> <a href="#v:liftIO" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Hsc:Applicative:2"></span> <a href="GHC-Prelude.html#t:Applicative" title="GHC.Prelude">Applicative</a> <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a></span> <a href="src/GHC.Driver.Types.html#line-278" class="link">Source</a> <a href="#t:Hsc" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Hsc:Applicative:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:pure">pure</a> :: a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a <a href="../base/src/GHC.Base.html#pure" class="link">Source</a> <a href="#v:pure" class="selflink">#</a></p><p class="src"><a href="#v:-60--42--62-">(&lt;*&gt;)</a> :: <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> (a -&gt; b) -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b <a href="../base/src/GHC.Base.html#%3C%2A%3E" class="link">Source</a> <a href="#v:-60--42--62-" class="selflink">#</a></p><p class="src"><a href="#v:liftA2">liftA2</a> :: (a -&gt; b -&gt; c) -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> c <a href="../base/src/GHC.Base.html#liftA2" class="link">Source</a> <a href="#v:liftA2" class="selflink">#</a></p><p class="src"><a href="#v:-42--62-">(*&gt;)</a> :: <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b <a href="../base/src/GHC.Base.html#%2A%3E" class="link">Source</a> <a href="#v:-42--62-" class="selflink">#</a></p><p class="src"><a href="#v:-60--42-">(&lt;*)</a> :: <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a <a href="../base/src/GHC.Base.html#%3C%2A" class="link">Source</a> <a href="#v:-60--42-" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Hsc:Functor:3"></span> <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a></span> <a href="src/GHC.Driver.Types.html#line-276" class="link">Source</a> <a href="#t:Hsc" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Hsc:Functor:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:fmap">fmap</a> :: (a -&gt; b) -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b <a href="../base/src/GHC.Base.html#fmap" class="link">Source</a> <a href="#v:fmap" class="selflink">#</a></p><p class="src"><a href="#v:-60--36-">(&lt;$)</a> :: a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a <a href="../base/src/GHC.Base.html#%3C%24" class="link">Source</a> <a href="#v:-60--36-" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Hsc:Monad:4"></span> <a href="GHC-Prelude.html#t:Monad" title="GHC.Prelude">Monad</a> <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a></span> <a href="src/GHC.Driver.Types.html#line-282" class="link">Source</a> <a href="#t:Hsc" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Hsc:Monad:4"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(&gt;&gt;=)</a> :: <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; (a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b) -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b <a href="../base/src/GHC.Base.html#%3E%3E%3D" class="link">Source</a> <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(&gt;&gt;)</a> :: <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> b <a href="../base/src/GHC.Base.html#%3E%3E" class="link">Source</a> <a href="#v:-62--62-" class="selflink">#</a></p><p class="src"><a href="#v:return">return</a> :: a -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a <a href="../base/src/GHC.Base.html#return" class="link">Source</a> <a href="#v:return" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Hsc:HasDynFlags:5"></span> <a href="GHC-Driver-Session.html#t:HasDynFlags" title="GHC.Driver.Session">HasDynFlags</a> <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a></span> <a href="src/GHC.Driver.Types.html#line-290" class="link">Source</a> <a href="#t:Hsc" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Hsc:HasDynFlags:5"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:getDynFlags">getDynFlags</a> :: <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> <a href="src/GHC.Driver.Session.html#getDynFlags" class="link">Source</a> <a href="#v:getDynFlags" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:runHsc" class="def">runHsc</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> a <a href="src/GHC.Driver.Types.html#runHsc" class="link">Source</a> <a href="#v:runHsc" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mkInteractiveHscEnv" class="def">mkInteractiveHscEnv</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> <a href="src/GHC.Driver.Types.html#mkInteractiveHscEnv" class="link">Source</a> <a href="#v:mkInteractiveHscEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:runInteractiveHsc" class="def">runInteractiveHsc</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:Hsc" title="GHC.Driver.Types">Hsc</a> a -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> a <a href="src/GHC.Driver.Types.html#runInteractiveHsc" class="link">Source</a> <a href="#v:runInteractiveHsc" class="selflink">#</a></p></div><a href="#g:4" id="g:4"><h1>Information about modules</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ModDetails" class="def">ModDetails</a> <a href="src/GHC.Driver.Types.html#ModDetails" class="link">Source</a> <a href="#t:ModDetails" class="selflink">#</a></p><div class="doc"><p>The <code><a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></code> is essentially a cache for information in the <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code>
 for home modules only. Information relating to packages will be loaded into
 global environments in <code><a href="GHC-Driver-Types.html#t:ExternalPackageState" title="GHC.Driver.Types">ExternalPackageState</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ModDetails" class="def">ModDetails</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:md_exports" class="def">md_exports</a> :: [<a href="GHC-Types-Avail.html#t:AvailInfo" title="GHC.Types.Avail">AvailInfo</a>]</dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:md_types" class="def">md_types</a> :: !<a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a></dfn><div class="doc"><p>Local type environment for this particular module
 Includes Ids, TyCons, PatSyns</p></div></li><li><dfn class="src"><a id="v:md_insts" class="def">md_insts</a> :: ![<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>]</dfn><div class="doc"><p><code><a href="GHC-Types-Var.html#t:DFunId" title="GHC.Types.Var">DFunId</a></code>s for the instances in this module</p></div></li><li><dfn class="src"><a id="v:md_fam_insts" class="def">md_fam_insts</a> :: ![<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>]</dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:md_rules" class="def">md_rules</a> :: ![<a href="GHC-Core.html#t:CoreRule" title="GHC.Core">CoreRule</a>]</dfn><div class="doc"><p>Domain may include <code><a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a></code>s from other modules</p></div></li><li><dfn class="src"><a id="v:md_anns" class="def">md_anns</a> :: ![<a href="GHC-Types-Annotations.html#t:Annotation" title="GHC.Types.Annotations">Annotation</a>]</dfn><div class="doc"><p>Annotations present in this module: currently
 they only annotate things also declared in this module</p></div></li><li><dfn class="src"><a id="v:md_complete_sigs" class="def">md_complete_sigs</a> :: [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>]</dfn><div class="doc"><p>Complete match pragmas for this module</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><a id="v:emptyModDetails" class="def">emptyModDetails</a> :: <a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a> <a href="src/GHC.Driver.Types.html#emptyModDetails" class="link">Source</a> <a href="#v:emptyModDetails" class="selflink">#</a></p><div class="doc"><p>Constructs an empty ModDetails</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ModGuts" class="def">ModGuts</a> <a href="src/GHC.Driver.Types.html#ModGuts" class="link">Source</a> <a href="#t:ModGuts" class="selflink">#</a></p><div class="doc"><p>A ModGuts is carried through the compiler, accumulating stuff as it goes
 There is only one ModGuts at any time, the one for the module
 being compiled right now.  Once it is compiled, a <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code> and
 <code><a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></code> are extracted and the ModGuts is discarded.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ModGuts" class="def">ModGuts</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:mg_module" class="def">mg_module</a> :: !<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></dfn><div class="doc"><p>Module being compiled</p></div></li><li><dfn class="src"><a id="v:mg_hsc_src" class="def">mg_hsc_src</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></dfn><div class="doc"><p>Whether it's an hs-boot module</p></div></li><li><dfn class="src"><a id="v:mg_loc" class="def">mg_loc</a> :: <a href="GHC-Types-SrcLoc.html#t:SrcSpan" title="GHC.Types.SrcLoc">SrcSpan</a></dfn><div class="doc"><p>For error messages from inner passes</p></div></li><li><dfn class="src"><a id="v:mg_exports" class="def">mg_exports</a> :: ![<a href="GHC-Types-Avail.html#t:AvailInfo" title="GHC.Types.Avail">AvailInfo</a>]</dfn><div class="doc"><p>What it exports</p></div></li><li><dfn class="src"><a id="v:mg_deps" class="def">mg_deps</a> :: !<a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a></dfn><div class="doc"><p>What it depends on, directly or
 otherwise</p></div></li><li><dfn class="src"><a id="v:mg_usages" class="def">mg_usages</a> :: ![<a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a>]</dfn><div class="doc"><p>What was used?  Used for interfaces.</p></div></li><li><dfn class="src"><a id="v:mg_used_th" class="def">mg_used_th</a> :: !<a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></dfn><div class="doc"><p>Did we run a TH splice?</p></div></li><li><dfn class="src"><a id="v:mg_rdr_env" class="def">mg_rdr_env</a> :: !<a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a></dfn><div class="doc"><p>Top-level lexical environment</p></div></li><li><dfn class="src"><a id="v:mg_fix_env" class="def">mg_fix_env</a> :: !<a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a></dfn><div class="doc"><p>Fixities declared in this module.
 Used for creating interface files.</p></div></li><li><dfn class="src"><a id="v:mg_tcs" class="def">mg_tcs</a> :: ![<a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a>]</dfn><div class="doc"><p>TyCons declared in this module
 (includes TyCons for classes)</p></div></li><li><dfn class="src"><a id="v:mg_insts" class="def">mg_insts</a> :: ![<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>]</dfn><div class="doc"><p>Class instances declared in this module</p></div></li><li><dfn class="src"><a id="v:mg_fam_insts" class="def">mg_fam_insts</a> :: ![<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>]</dfn><div class="doc"><p>Family instances declared in this module</p></div></li><li><dfn class="src"><a id="v:mg_patsyns" class="def">mg_patsyns</a> :: ![<a href="GHC-Core-PatSyn.html#t:PatSyn" title="GHC.Core.PatSyn">PatSyn</a>]</dfn><div class="doc"><p>Pattern synonyms declared in this module</p></div></li><li><dfn class="src"><a id="v:mg_rules" class="def">mg_rules</a> :: ![<a href="GHC-Core.html#t:CoreRule" title="GHC.Core">CoreRule</a>]</dfn><div class="doc"><p>Before the core pipeline starts, contains
 See Note [Overall plumbing for rules] in <a href="GHC-Core-Rules.html">GHC.Core.Rules</a></p></div></li><li><dfn class="src"><a id="v:mg_binds" class="def">mg_binds</a> :: !<a href="GHC-Core.html#t:CoreProgram" title="GHC.Core">CoreProgram</a></dfn><div class="doc"><p>Bindings for this module</p></div></li><li><dfn class="src"><a id="v:mg_foreign" class="def">mg_foreign</a> :: !<a href="GHC-Driver-Types.html#t:ForeignStubs" title="GHC.Driver.Types">ForeignStubs</a></dfn><div class="doc"><p>Foreign exports declared in this module</p></div></li><li><dfn class="src"><a id="v:mg_foreign_files" class="def">mg_foreign_files</a> :: ![(<a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a>, <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>)]</dfn><div class="doc"><p>Files to be compiled with the C compiler</p></div></li><li><dfn class="src"><a id="v:mg_warns" class="def">mg_warns</a> :: !<a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a></dfn><div class="doc"><p>Warnings declared in the module</p></div></li><li><dfn class="src"><a id="v:mg_anns" class="def">mg_anns</a> :: [<a href="GHC-Types-Annotations.html#t:Annotation" title="GHC.Types.Annotations">Annotation</a>]</dfn><div class="doc"><p>Annotations declared in this module</p></div></li><li><dfn class="src"><a id="v:mg_complete_sigs" class="def">mg_complete_sigs</a> :: [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>]</dfn><div class="doc"><p>Complete Matches</p></div></li><li><dfn class="src"><a id="v:mg_hpc_info" class="def">mg_hpc_info</a> :: !<a href="GHC-Driver-Types.html#t:HpcInfo" title="GHC.Driver.Types">HpcInfo</a></dfn><div class="doc"><p>Coverage tick boxes in the module</p></div></li><li><dfn class="src"><a id="v:mg_modBreaks" class="def">mg_modBreaks</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModBreaks" title="GHC.Driver.Types">ModBreaks</a>)</dfn><div class="doc"><p>Breakpoints for the module</p></div></li><li><dfn class="src"><a id="v:mg_inst_env" class="def">mg_inst_env</a> :: <a href="GHC-Core-InstEnv.html#t:InstEnv" title="GHC.Core.InstEnv">InstEnv</a></dfn><div class="doc"><p>Class instance environment for
 <em>home-package</em> modules (including this
 one); c.f. <code>tcg_inst_env</code></p></div></li><li><dfn class="src"><a id="v:mg_fam_inst_env" class="def">mg_fam_inst_env</a> :: <a href="GHC-Core-FamInstEnv.html#t:FamInstEnv" title="GHC.Core.FamInstEnv">FamInstEnv</a></dfn><div class="doc"><p>Type-family instance environment for
 <em>home-package</em> modules (including this
 one); c.f. <code>tcg_fam_inst_env</code></p></div></li><li><dfn class="src"><a id="v:mg_safe_haskell" class="def">mg_safe_haskell</a> :: <a href="GHC-Driver-Session.html#t:SafeHaskellMode" title="GHC.Driver.Session">SafeHaskellMode</a></dfn><div class="doc"><p>Safe Haskell mode</p></div></li><li><dfn class="src"><a id="v:mg_trust_pkg" class="def">mg_trust_pkg</a> :: <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></dfn><div class="doc"><p>Do we need to trust our
 own package for Safe Haskell?
 See Note [Trust Own Package]
 in <a href="GHC-Rename-Names.html">GHC.Rename.Names</a></p></div></li><li><dfn class="src"><a id="v:mg_doc_hdr" class="def">mg_doc_hdr</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Hs-Doc.html#t:HsDocString" title="GHC.Hs.Doc">HsDocString</a>)</dfn><div class="doc"><p>Module header.</p></div></li><li><dfn class="src"><a id="v:mg_decl_docs" class="def">mg_decl_docs</a> :: !<a href="GHC-Hs-Doc.html#t:DeclDocMap" title="GHC.Hs.Doc">DeclDocMap</a></dfn><div class="doc"><p>Docs on declarations.</p></div></li><li><dfn class="src"><a id="v:mg_arg_docs" class="def">mg_arg_docs</a> :: !<a href="GHC-Hs-Doc.html#t:ArgDocMap" title="GHC.Hs.Doc">ArgDocMap</a></dfn><div class="doc"><p>Docs on arguments.</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:CgGuts" class="def">CgGuts</a> <a href="src/GHC.Driver.Types.html#CgGuts" class="link">Source</a> <a href="#t:CgGuts" class="selflink">#</a></p><div class="doc"><p>A restricted form of <code><a href="GHC-Driver-Types.html#t:ModGuts" title="GHC.Driver.Types">ModGuts</a></code> for code generation purposes</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:CgGuts" class="def">CgGuts</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:cg_module" class="def">cg_module</a> :: !<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></dfn><div class="doc"><p>Module being compiled</p></div></li><li><dfn class="src"><a id="v:cg_tycons" class="def">cg_tycons</a> :: [<a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a>]</dfn><div class="doc"><p>Algebraic data types (including ones that started
 life as classes); generate constructors and info
 tables. Includes newtypes, just for the benefit of
 External Core</p></div></li><li><dfn class="src"><a id="v:cg_binds" class="def">cg_binds</a> :: <a href="GHC-Core.html#t:CoreProgram" title="GHC.Core">CoreProgram</a></dfn><div class="doc"><p>The tidied main bindings, including
 previously-implicit bindings for record and class
 selectors, and data constructor wrappers.  But *not*
 data constructor workers; reason: we regard them
 as part of the code-gen of tycons</p></div></li><li><dfn class="src"><a id="v:cg_foreign" class="def">cg_foreign</a> :: !<a href="GHC-Driver-Types.html#t:ForeignStubs" title="GHC.Driver.Types">ForeignStubs</a></dfn><div class="doc"><p>Foreign export stubs</p></div></li><li><dfn class="src"><a id="v:cg_foreign_files" class="def">cg_foreign_files</a> :: ![(<a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a>, <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>)]</dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:cg_dep_pkgs" class="def">cg_dep_pkgs</a> :: ![<a href="GHC-Unit-Types.html#t:UnitId" title="GHC.Unit.Types">UnitId</a>]</dfn><div class="doc"><p>Dependent packages, used to
 generate #includes for C code gen</p></div></li><li><dfn class="src"><a id="v:cg_hpc_info" class="def">cg_hpc_info</a> :: !<a href="GHC-Driver-Types.html#t:HpcInfo" title="GHC.Driver.Types">HpcInfo</a></dfn><div class="doc"><p>Program coverage tick box information</p></div></li><li><dfn class="src"><a id="v:cg_modBreaks" class="def">cg_modBreaks</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModBreaks" title="GHC.Driver.Types">ModBreaks</a>)</dfn><div class="doc"><p>Module breakpoints</p></div></li><li><dfn class="src"><a id="v:cg_spt_entries" class="def">cg_spt_entries</a> :: [<a href="GHC-Driver-Types.html#t:SptEntry" title="GHC.Driver.Types">SptEntry</a>]</dfn><div class="doc"><p>Static pointer table entries for static forms defined in
 the module.
 See Note [Grand plan for static forms] in <a href="GHC-Iface-Tidy-StaticPtrTable.html">GHC.Iface.Tidy.StaticPtrTable</a></p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ForeignStubs" class="def">ForeignStubs</a> <a href="src/GHC.Driver.Types.html#ForeignStubs" class="link">Source</a> <a href="#t:ForeignStubs" class="selflink">#</a></p><div class="doc"><p>Foreign export stubs</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:NoStubs" class="def">NoStubs</a></td><td class="doc"><p>We don't have any stubs</p></td></tr><tr><td class="src"><a id="v:ForeignStubs" class="def">ForeignStubs</a> <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a></td><td class="doc"><p>There are some stubs. Parameters:</p><p>1) Header file prototypes for
     &quot;foreign exported&quot; functions</p><p>2) C stubs to use when calling
     &quot;foreign exported&quot; functions</p></td></tr></table></div></div><div class="top"><p class="src"><a id="v:appendStubC" class="def">appendStubC</a> :: <a href="GHC-Driver-Types.html#t:ForeignStubs" title="GHC.Driver.Types">ForeignStubs</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> -&gt; <a href="GHC-Driver-Types.html#t:ForeignStubs" title="GHC.Driver.Types">ForeignStubs</a> <a href="src/GHC.Driver.Types.html#appendStubC" class="link">Source</a> <a href="#v:appendStubC" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:ImportedMods" class="def">ImportedMods</a> = <a href="GHC-Unit-Module-Env.html#t:ModuleEnv" title="GHC.Unit.Module.Env">ModuleEnv</a> [<a href="GHC-Driver-Types.html#t:ImportedBy" title="GHC.Driver.Types">ImportedBy</a>] <a href="src/GHC.Driver.Types.html#ImportedMods" class="link">Source</a> <a href="#t:ImportedMods" class="selflink">#</a></p><div class="doc"><p>Records the modules directly imported by a module for extracting e.g.
 usage information, and also to give better error message</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ImportedBy" class="def">ImportedBy</a> <a href="src/GHC.Driver.Types.html#ImportedBy" class="link">Source</a> <a href="#t:ImportedBy" class="selflink">#</a></p><div class="doc"><p>If a module was &quot;imported&quot; by the user, we associate it with
 more detailed usage information <code><a href="GHC-Driver-Types.html#t:ImportedModsVal" title="GHC.Driver.Types">ImportedModsVal</a></code>; a module
 imported by the system only gets used for usage information.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ImportedByUser" class="def">ImportedByUser</a> <a href="GHC-Driver-Types.html#t:ImportedModsVal" title="GHC.Driver.Types">ImportedModsVal</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:ImportedBySystem" class="def">ImportedBySystem</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><a id="v:importedByUser" class="def">importedByUser</a> :: [<a href="GHC-Driver-Types.html#t:ImportedBy" title="GHC.Driver.Types">ImportedBy</a>] -&gt; [<a href="GHC-Driver-Types.html#t:ImportedModsVal" title="GHC.Driver.Types">ImportedModsVal</a>] <a href="src/GHC.Driver.Types.html#importedByUser" class="link">Source</a> <a href="#v:importedByUser" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ImportedModsVal" class="def">ImportedModsVal</a> <a href="src/GHC.Driver.Types.html#ImportedModsVal" class="link">Source</a> <a href="#t:ImportedModsVal" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ImportedModsVal" class="def">ImportedModsVal</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:imv_name" class="def">imv_name</a> :: <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></dfn><div class="doc"><p>The name the module is imported with</p></div></li><li><dfn class="src"><a id="v:imv_span" class="def">imv_span</a> :: <a href="GHC-Types-SrcLoc.html#t:SrcSpan" title="GHC.Types.SrcLoc">SrcSpan</a></dfn><div class="doc"><p>the source span of the whole import</p></div></li><li><dfn class="src"><a id="v:imv_is_safe" class="def">imv_is_safe</a> :: <a href="GHC-Driver-Types.html#t:IsSafeImport" title="GHC.Driver.Types">IsSafeImport</a></dfn><div class="doc"><p>whether this is a safe import</p></div></li><li><dfn class="src"><a id="v:imv_is_hiding" class="def">imv_is_hiding</a> :: <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></dfn><div class="doc"><p>whether this is an &quot;hiding&quot; import</p></div></li><li><dfn class="src"><a id="v:imv_all_exports" class="def">imv_all_exports</a> :: !<a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a></dfn><div class="doc"><p>all the things the module could provide
 NB. BangPattern here: otherwise this leaks. (#15111)</p></div></li><li><dfn class="src"><a id="v:imv_qualified" class="def">imv_qualified</a> :: <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></dfn><div class="doc"><p>whether this is a qualified import</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:SptEntry" class="def">SptEntry</a> <a href="src/GHC.Runtime.Linker.Types.html#SptEntry" class="link">Source</a> <a href="#t:SptEntry" class="selflink">#</a></p><div class="doc"><p>An entry to be inserted into a module's static pointer table.
 See Note [Grand plan for static forms] in <a href="GHC-Iface-Tidy-StaticPtrTable.html">GHC.Iface.Tidy.StaticPtrTable</a>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:SptEntry" class="def">SptEntry</a> <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a> <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:SptEntry">Instances</h4><details id="i:SptEntry" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:SptEntry:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:SptEntry" title="GHC.Driver.Types">SptEntry</a></span> <a href="src/GHC.Runtime.Linker.Types.html#line-106" class="link">Source</a> <a href="#t:SptEntry" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:SptEntry:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Runtime-Linker-Types.html">GHC.Runtime.Linker.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:SptEntry" title="GHC.Driver.Types">SptEntry</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:SptEntry" title="GHC.Driver.Types">SptEntry</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ForeignSrcLang" class="def">ForeignSrcLang</a> <a href="../ghc-boot-th/src/GHC.ForeignSrcLang.Type.html#ForeignSrcLang" class="link">Source</a> <a href="#t:ForeignSrcLang" class="selflink">#</a></p><div class="doc"><p>Foreign formats supported by GHC via TH</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:LangC" class="def">LangC</a></td><td class="doc"><p>C</p></td></tr><tr><td class="src"><a id="v:LangCxx" class="def">LangCxx</a></td><td class="doc"><p>C++</p></td></tr><tr><td class="src"><a id="v:LangObjc" class="def">LangObjc</a></td><td class="doc"><p>Objective C</p></td></tr><tr><td class="src"><a id="v:LangObjcxx" class="def">LangObjcxx</a></td><td class="doc"><p>Objective C++</p></td></tr><tr><td class="src"><a id="v:LangAsm" class="def">LangAsm</a></td><td class="doc"><p>Assembly language (.s)</p></td></tr><tr><td class="src"><a id="v:RawObject" class="def">RawObject</a></td><td class="doc"><p>Object (.o)</p></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:ForeignSrcLang">Instances</h4><details id="i:ForeignSrcLang" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ForeignSrcLang:Generic:1"></span> <a href="../base/GHC-Generics.html#t:Generic" title="GHC.Generics">Generic</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:ForeignSrcLang:Generic:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="../ghc-boot-th/GHC-ForeignSrcLang-Type.html">GHC.ForeignSrcLang.Type</a></p> <div class="subs associated-types"><p class="caption">Associated Types</p><p class="src"><span class="keyword">type</span> <a href="../base/GHC-Generics.html#t:Rep" title="GHC.Generics">Rep</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> :: <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a> -&gt; <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a> <a href="../base/src/GHC.Generics.html#Rep" class="link">Source</a> <a href="#t:Rep" class="selflink">#</a></p></div> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:from">from</a> :: <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> -&gt; <a href="../base/GHC-Generics.html#t:Rep" title="GHC.Generics">Rep</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> x <a href="../base/src/GHC.Generics.html#from" class="link">Source</a> <a href="#v:from" class="selflink">#</a></p><p class="src"><a href="#v:to">to</a> :: <a href="../base/GHC-Generics.html#t:Rep" title="GHC.Generics">Rep</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> x -&gt; <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> <a href="../base/src/GHC.Generics.html#to" class="link">Source</a> <a href="#v:to" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ForeignSrcLang:Show:2"></span> <a href="GHC-Prelude.html#t:Show" title="GHC.Prelude">Show</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:ForeignSrcLang:Show:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="../ghc-boot-th/GHC-ForeignSrcLang-Type.html">GHC.ForeignSrcLang.Type</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showsPrec" class="link">Source</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="../base/src/GHC.Show.html#show" class="link">Source</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a>] -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showList" class="link">Source</a> <a href="#v:showList" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ForeignSrcLang:Eq:3"></span> <a href="GHC-Prelude.html#t:Eq" title="GHC.Prelude">Eq</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:ForeignSrcLang:Eq:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="../ghc-boot-th/GHC-ForeignSrcLang-Type.html">GHC.ForeignSrcLang.Type</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> -&gt; <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> -&gt; <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ForeignSrcLang:Rep:4"></span> <span class="keyword">type</span> <a href="../base/GHC-Generics.html#t:Rep" title="GHC.Generics">Rep</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:ForeignSrcLang:Rep:4"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="../ghc-boot-th/GHC-ForeignSrcLang-Type.html">GHC.ForeignSrcLang.Type</a></p> <div class="src"><span class="keyword">type</span> <a href="../base/GHC-Generics.html#t:Rep" title="GHC.Generics">Rep</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> = <a href="../base/GHC-Generics.html#t:D1" title="GHC.Generics">D1</a> ('<a href="../base/GHC-Generics.html#v:MetaData" title="GHC.Generics">MetaData</a> &quot;ForeignSrcLang&quot; &quot;GHC.ForeignSrcLang.Type&quot; &quot;ghc-boot-th-9.0.2&quot; '<a href="GHC-Prelude.html#v:False" title="GHC.Prelude">False</a>) ((<a href="../base/GHC-Generics.html#t:C1" title="GHC.Generics">C1</a> ('<a href="../base/GHC-Generics.html#v:MetaCons" title="GHC.Generics">MetaCons</a> &quot;LangC&quot; '<a href="../base/GHC-Generics.html#v:PrefixI" title="GHC.Generics">PrefixI</a> '<a href="GHC-Prelude.html#v:False" title="GHC.Prelude">False</a>) (<a href="../base/GHC-Generics.html#t:U1" title="GHC.Generics">U1</a> :: <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a> -&gt; <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a>) <a href="../base/GHC-Generics.html#t::-43-:" title="GHC.Generics">:+:</a> (<a href="../base/GHC-Generics.html#t:C1" title="GHC.Generics">C1</a> ('<a href="../base/GHC-Generics.html#v:MetaCons" title="GHC.Generics">MetaCons</a> &quot;LangCxx&quot; '<a href="../base/GHC-Generics.html#v:PrefixI" title="GHC.Generics">PrefixI</a> '<a href="GHC-Prelude.html#v:False" title="GHC.Prelude">False</a>) (<a href="../base/GHC-Generics.html#t:U1" title="GHC.Generics">U1</a> :: <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a> -&gt; <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a>) <a href="../base/GHC-Generics.html#t::-43-:" title="GHC.Generics">:+:</a> <a href="../base/GHC-Generics.html#t:C1" title="GHC.Generics">C1</a> ('<a href="../base/GHC-Generics.html#v:MetaCons" title="GHC.Generics">MetaCons</a> &quot;LangObjc&quot; '<a href="../base/GHC-Generics.html#v:PrefixI" title="GHC.Generics">PrefixI</a> '<a href="GHC-Prelude.html#v:False" title="GHC.Prelude">False</a>) (<a href="../base/GHC-Generics.html#t:U1" title="GHC.Generics">U1</a> :: <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a> -&gt; <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a>))) <a href="../base/GHC-Generics.html#t::-43-:" title="GHC.Generics">:+:</a> (<a href="../base/GHC-Generics.html#t:C1" title="GHC.Generics">C1</a> ('<a href="../base/GHC-Generics.html#v:MetaCons" title="GHC.Generics">MetaCons</a> &quot;LangObjcxx&quot; '<a href="../base/GHC-Generics.html#v:PrefixI" title="GHC.Generics">PrefixI</a> '<a href="GHC-Prelude.html#v:False" title="GHC.Prelude">False</a>) (<a href="../base/GHC-Generics.html#t:U1" title="GHC.Generics">U1</a> :: <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a> -&gt; <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a>) <a href="../base/GHC-Generics.html#t::-43-:" title="GHC.Generics">:+:</a> (<a href="../base/GHC-Generics.html#t:C1" title="GHC.Generics">C1</a> ('<a href="../base/GHC-Generics.html#v:MetaCons" title="GHC.Generics">MetaCons</a> &quot;LangAsm&quot; '<a href="../base/GHC-Generics.html#v:PrefixI" title="GHC.Generics">PrefixI</a> '<a href="GHC-Prelude.html#v:False" title="GHC.Prelude">False</a>) (<a href="../base/GHC-Generics.html#t:U1" title="GHC.Generics">U1</a> :: <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a> -&gt; <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a>) <a href="../base/GHC-Generics.html#t::-43-:" title="GHC.Generics">:+:</a> <a href="../base/GHC-Generics.html#t:C1" title="GHC.Generics">C1</a> ('<a href="../base/GHC-Generics.html#v:MetaCons" title="GHC.Generics">MetaCons</a> &quot;RawObject&quot; '<a href="../base/GHC-Generics.html#v:PrefixI" title="GHC.Generics">PrefixI</a> '<a href="GHC-Prelude.html#v:False" title="GHC.Prelude">False</a>) (<a href="../base/GHC-Generics.html#t:U1" title="GHC.Generics">U1</a> :: <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a> -&gt; <a href="../base/Data-Kind.html#t:Type" title="Data.Kind">Type</a>))))</div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:phaseForeignLanguage" class="def">phaseForeignLanguage</a> :: <a href="GHC-Driver-Phases.html#t:Phase" title="GHC.Driver.Phases">Phase</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ForeignSrcLang" title="GHC.Driver.Types">ForeignSrcLang</a> <a href="src/GHC.Driver.Types.html#phaseForeignLanguage" class="link">Source</a> <a href="#v:phaseForeignLanguage" class="selflink">#</a></p><div class="doc"><p>Foreign language of the phase if the phase deals with a foreign code</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ModSummary" class="def">ModSummary</a> <a href="src/GHC.Driver.Types.html#ModSummary" class="link">Source</a> <a href="#t:ModSummary" class="selflink">#</a></p><div class="doc"><p>A single node in a <code><a href="GHC-Driver-Types.html#t:ModuleGraph" title="GHC.Driver.Types">ModuleGraph</a></code>. The nodes of the module graph
 are one of:</p><ul><li>A regular Haskell source module</li><li>A hi-boot source module</li></ul></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ModSummary" class="def">ModSummary</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:ms_mod" class="def">ms_mod</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></dfn><div class="doc"><p>Identity of the module</p></div></li><li><dfn class="src"><a id="v:ms_hsc_src" class="def">ms_hsc_src</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></dfn><div class="doc"><p>The module source either plain Haskell or hs-boot</p></div></li><li><dfn class="src"><a id="v:ms_location" class="def">ms_location</a> :: <a href="GHC-Unit-Module-Location.html#t:ModLocation" title="GHC.Unit.Module.Location">ModLocation</a></dfn><div class="doc"><p>Location of the various files belonging to the module</p></div></li><li><dfn class="src"><a id="v:ms_hs_date" class="def">ms_hs_date</a> :: <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></dfn><div class="doc"><p>Timestamp of source file</p></div></li><li><dfn class="src"><a id="v:ms_obj_date" class="def">ms_obj_date</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></dfn><div class="doc"><p>Timestamp of object, if we have one</p></div></li><li><dfn class="src"><a id="v:ms_iface_date" class="def">ms_iface_date</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></dfn><div class="doc"><p>Timestamp of hi file, if we *only* are typechecking (it is
 <code><a href="GHC-Prelude.html#v:Nothing" title="GHC.Prelude">Nothing</a></code> otherwise.
 See Note [Recompilation checking in -fno-code mode] and #9243</p></div></li><li><dfn class="src"><a id="v:ms_hie_date" class="def">ms_hie_date</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></dfn><div class="doc"><p>Timestamp of hie file, if we have one</p></div></li><li><dfn class="src"><a id="v:ms_srcimps" class="def">ms_srcimps</a> :: [(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-FastString.html#t:FastString" title="GHC.Data.FastString">FastString</a>, <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)]</dfn><div class="doc"><p>Source imports of the module</p></div></li><li><dfn class="src"><a id="v:ms_textual_imps" class="def">ms_textual_imps</a> :: [(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-FastString.html#t:FastString" title="GHC.Data.FastString">FastString</a>, <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)]</dfn><div class="doc"><p>Non-source imports of the module from the module *text*</p></div></li><li><dfn class="src"><a id="v:ms_parsed_mod" class="def">ms_parsed_mod</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:HsParsedModule" title="GHC.Driver.Types">HsParsedModule</a></dfn><div class="doc"><p>The parsed, nonrenamed source, if we have it.  This is also
 used to support &quot;inline module syntax&quot; in Backpack files.</p></div></li><li><dfn class="src"><a id="v:ms_hspp_file" class="def">ms_hspp_file</a> :: <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></dfn><div class="doc"><p>Filename of preprocessed source file</p></div></li><li><dfn class="src"><a id="v:ms_hspp_opts" class="def">ms_hspp_opts</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></dfn><div class="doc"><p>Cached flags from <code>OPTIONS</code>, <code>INCLUDE</code> and <code>LANGUAGE</code>
 pragmas in the modules source code</p></div></li><li><dfn class="src"><a id="v:ms_hspp_buf" class="def">ms_hspp_buf</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-StringBuffer.html#t:StringBuffer" title="GHC.Data.StringBuffer">StringBuffer</a></dfn><div class="doc"><p>The actual preprocessed source, if we have it</p></div></li></ul></div></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:ModSummary">Instances</h4><details id="i:ModSummary" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ModSummary:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a></span> <a href="src/GHC.Driver.Types.html#line-2991" class="link">Source</a> <a href="#t:ModSummary" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:ModSummary:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:ms_imps" class="def">ms_imps</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; [(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-FastString.html#t:FastString" title="GHC.Data.FastString">FastString</a>, <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)] <a href="src/GHC.Driver.Types.html#ms_imps" class="link">Source</a> <a href="#v:ms_imps" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:ms_installed_mod" class="def">ms_installed_mod</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Unit-Types.html#t:InstalledModule" title="GHC.Unit.Types">InstalledModule</a> <a href="src/GHC.Driver.Types.html#ms_installed_mod" class="link">Source</a> <a href="#v:ms_installed_mod" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:ms_mod_name" class="def">ms_mod_name</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> <a href="src/GHC.Driver.Types.html#ms_mod_name" class="link">Source</a> <a href="#v:ms_mod_name" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:ms_home_imps" class="def">ms_home_imps</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>] <a href="src/GHC.Driver.Types.html#ms_home_imps" class="link">Source</a> <a href="#v:ms_home_imps" class="selflink">#</a></p><div class="doc"><p>All of the (possibly) home module imports from a
 <code><a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a></code>; that is to say, each of these module names
 could be a home import if an appropriately named file
 existed.  (This is in contrast to package qualified
 imports, which are guaranteed not to be home imports.)</p></div></div><div class="top"><p class="src"><a id="v:home_imps" class="def">home_imps</a> :: [(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Data-FastString.html#t:FastString" title="GHC.Data.FastString">FastString</a>, <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)] -&gt; [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>] <a href="src/GHC.Driver.Types.html#home_imps" class="link">Source</a> <a href="#v:home_imps" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:ms_home_allimps" class="def">ms_home_allimps</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; [<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>] <a href="src/GHC.Driver.Types.html#ms_home_allimps" class="link">Source</a> <a href="#v:ms_home_allimps" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:ms_home_srcimps" class="def">ms_home_srcimps</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>] <a href="src/GHC.Driver.Types.html#ms_home_srcimps" class="link">Source</a> <a href="#v:ms_home_srcimps" class="selflink">#</a></p><div class="doc"><p>Like <code><a href="GHC-Driver-Types.html#v:ms_home_imps" title="GHC.Driver.Types">ms_home_imps</a></code>, but for SOURCE imports.</p></div></div><div class="top"><p class="src"><a id="v:showModMsg" class="def">showModMsg</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Driver-Session.html#t:HscTarget" title="GHC.Driver.Session">HscTarget</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> -&gt; <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="src/GHC.Driver.Types.html#showModMsg" class="link">Source</a> <a href="#v:showModMsg" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:isBootSummary" class="def">isBootSummary</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="src/GHC.Driver.Types.html#isBootSummary" class="link">Source</a> <a href="#v:isBootSummary" class="selflink">#</a></p><div class="doc"><p>Did this <code><a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a></code> originate from a hs-boot file?</p></div></div><div class="top"><p class="src"><a id="v:msHsFilePath" class="def">msHsFilePath</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> <a href="src/GHC.Driver.Types.html#msHsFilePath" class="link">Source</a> <a href="#v:msHsFilePath" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:msHiFilePath" class="def">msHiFilePath</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> <a href="src/GHC.Driver.Types.html#msHiFilePath" class="link">Source</a> <a href="#v:msHiFilePath" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:msObjFilePath" class="def">msObjFilePath</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> <a href="src/GHC.Driver.Types.html#msObjFilePath" class="link">Source</a> <a href="#v:msObjFilePath" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:SourceModified" class="def">SourceModified</a> <a href="src/GHC.Driver.Types.html#SourceModified" class="link">Source</a> <a href="#t:SourceModified" class="selflink">#</a></p><div class="doc"><p>Indicates whether a given module's source has been modified since it
 was last compiled.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:SourceModified" class="def">SourceModified</a></td><td class="doc"><p>the source has been modified</p></td></tr><tr><td class="src"><a id="v:SourceUnmodified" class="def">SourceUnmodified</a></td><td class="doc"><p>the source has not been modified.  Compilation may or may
 not be necessary, depending on whether any dependencies have
 changed since we last compiled.</p></td></tr><tr><td class="src"><a id="v:SourceUnmodifiedAndStable" class="def">SourceUnmodifiedAndStable</a></td><td class="doc"><p>the source has not been modified, and furthermore all of
 its (transitive) dependencies are up to date; it definitely
 does not need to be recompiled.  This is important for two
 reasons: (a) we can omit the version check in checkOldIface,
 and (b) if the module used TH splices we don't need to force
 recompilation.</p></td></tr></table></div></div><div class="top"><p class="src"><a id="v:isTemplateHaskellOrQQNonBoot" class="def">isTemplateHaskellOrQQNonBoot</a> :: <a href="GHC-Driver-Types.html#t:ModSummary" title="GHC.Driver.Types">ModSummary</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#isTemplateHaskellOrQQNonBoot" class="link">Source</a> <a href="#v:isTemplateHaskellOrQQNonBoot" class="selflink">#</a></p></div><a href="#g:5" id="g:5"><h1>Information about the module being compiled</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:HscSource" class="def">HscSource</a> <a href="src/GHC.Driver.Phases.html#HscSource" class="link">Source</a> <a href="#t:HscSource" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:HsSrcFile" class="def">HsSrcFile</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:HsBootFile" class="def">HsBootFile</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:HsigFile" class="def">HsigFile</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:HscSource">Instances</h4><details id="i:HscSource" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:HscSource:Show:1"></span> <a href="GHC-Prelude.html#t:Show" title="GHC.Prelude">Show</a> <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></span> <a href="src/GHC.Driver.Phases.html#line-100" class="link">Source</a> <a href="#t:HscSource" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:HscSource:Show:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Phases.html">GHC.Driver.Phases</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showsPrec" class="link">Source</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="../base/src/GHC.Show.html#show" class="link">Source</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a>] -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showList" class="link">Source</a> <a href="#v:showList" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:HscSource:Binary:2"></span> <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></span> <a href="src/GHC.Driver.Phases.html#line-103" class="link">Source</a> <a href="#t:HscSource" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:HscSource:Binary:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Phases.html">GHC.Driver.Phases</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:put_">put_</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Utils.Binary.html#put_" class="link">Source</a> <a href="#v:put_" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Utils-Binary.html#t:Bin" title="GHC.Utils.Binary">Bin</a> <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a>) <a href="src/GHC.Utils.Binary.html#put" class="link">Source</a> <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:get">get</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> <a href="src/GHC.Utils.Binary.html#get" class="link">Source</a> <a href="#v:get" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:HscSource:Eq:3"></span> <a href="GHC-Prelude.html#t:Eq" title="GHC.Prelude">Eq</a> <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></span> <a href="src/GHC.Driver.Phases.html#line-100" class="link">Source</a> <a href="#t:HscSource" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:HscSource:Eq:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Phases.html">GHC.Driver.Phases</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:HscSource:Ord:4"></span> <a href="GHC-Prelude.html#t:Ord" title="GHC.Prelude">Ord</a> <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></span> <a href="src/GHC.Driver.Phases.html#line-100" class="link">Source</a> <a href="#t:HscSource" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:HscSource:Ord:4"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Phases.html">GHC.Driver.Phases</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:compare">compare</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Ordering" title="GHC.Prelude">Ordering</a> <a href="#v:compare" class="selflink">#</a></p><p class="src"><a href="#v:-60-">(&lt;)</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-60-" class="selflink">#</a></p><p class="src"><a href="#v:-60--61-">(&lt;=)</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-60--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62-">(&gt;)</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-62-" class="selflink">#</a></p><p class="src"><a href="#v:-62--61-">(&gt;=)</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-62--61-" class="selflink">#</a></p><p class="src"><a href="#v:max">max</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> <a href="#v:max" class="selflink">#</a></p><p class="src"><a href="#v:min">min</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> <a href="#v:min" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:isHsBootOrSig" class="def">isHsBootOrSig</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Phases.html#isHsBootOrSig" class="link">Source</a> <a href="#v:isHsBootOrSig" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:isHsigFile" class="def">isHsigFile</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Phases.html#isHsigFile" class="link">Source</a> <a href="#v:isHsigFile" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:hscSourceString" class="def">hscSourceString</a> :: <a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="src/GHC.Driver.Phases.html#hscSourceString" class="link">Source</a> <a href="#v:hscSourceString" class="selflink">#</a></p></div><a href="#g:6" id="g:6"><h1>State relating to modules in this package</h1></a><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:HomePackageTable" class="def">HomePackageTable</a> = <a href="GHC-Unit-Module-Env.html#t:DModuleNameEnv" title="GHC.Unit.Module.Env">DModuleNameEnv</a> <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> <a href="src/GHC.Driver.Types.html#HomePackageTable" class="link">Source</a> <a href="#t:HomePackageTable" class="selflink">#</a></p><div class="doc"><p>Helps us find information about modules in the home package</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:HomeModInfo" class="def">HomeModInfo</a> <a href="src/GHC.Driver.Types.html#HomeModInfo" class="link">Source</a> <a href="#t:HomeModInfo" class="selflink">#</a></p><div class="doc"><p>Information about modules in the package being compiled</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:HomeModInfo" class="def">HomeModInfo</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:hm_iface" class="def">hm_iface</a> :: !<a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></dfn><div class="doc"><p>The basic loaded interface file: every loaded module has one of
 these, even if it is imported from another package</p></div></li><li><dfn class="src"><a id="v:hm_details" class="def">hm_details</a> :: !<a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></dfn><div class="doc"><p>Extra information that has been created from the <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code> for
 the module, typically during typechecking</p></div></li><li><dfn class="src"><a id="v:hm_linkable" class="def">hm_linkable</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:Linkable" title="GHC.Driver.Types">Linkable</a>)</dfn><div class="doc"><p>The actual artifact we would like to link to access things in
 this module.</p><p><code><a href="GHC-Driver-Types.html#v:hm_linkable" title="GHC.Driver.Types">hm_linkable</a></code> might be Nothing:</p><ol><li>If this is an .hs-boot module</li><li>Temporarily during compilation if we pruned away
      the old linkable because it was out of date.</li></ol><p>After a complete compilation (<code><a href="GHC.html#v:load" title="GHC">load</a></code>), all <code><a href="GHC-Driver-Types.html#v:hm_linkable" title="GHC.Driver.Types">hm_linkable</a></code> fields
 in the <code><a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></code> will be <code>Just</code>.</p><p>When re-linking a module (<code><a href="GHC-Driver-Main.html#v:HscNoRecomp" title="GHC.Driver.Main">HscNoRecomp</a></code>), we construct the
 <code><a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a></code> by building a new <code><a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></code> from the old
 <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code> (only).</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><a id="v:emptyHomePackageTable" class="def">emptyHomePackageTable</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> <a href="src/GHC.Driver.Types.html#emptyHomePackageTable" class="link">Source</a> <a href="#v:emptyHomePackageTable" class="selflink">#</a></p><div class="doc"><p>Constructs an empty HomePackageTable</p></div></div><div class="top"><p class="src"><a id="v:lookupHpt" class="def">lookupHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> <a href="src/GHC.Driver.Types.html#lookupHpt" class="link">Source</a> <a href="#v:lookupHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:eltsHpt" class="def">eltsHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; [<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a>] <a href="src/GHC.Driver.Types.html#eltsHpt" class="link">Source</a> <a href="#v:eltsHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:filterHpt" class="def">filterHpt</a> :: (<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>) -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> <a href="src/GHC.Driver.Types.html#filterHpt" class="link">Source</a> <a href="#v:filterHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:allHpt" class="def">allHpt</a> :: (<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>) -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#allHpt" class="link">Source</a> <a href="#v:allHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:anyHpt" class="def">anyHpt</a> :: (<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>) -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#anyHpt" class="link">Source</a> <a href="#v:anyHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mapHpt" class="def">mapHpt</a> :: (<a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a>) -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> <a href="src/GHC.Driver.Types.html#mapHpt" class="link">Source</a> <a href="#v:mapHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:delFromHpt" class="def">delFromHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> <a href="src/GHC.Driver.Types.html#delFromHpt" class="link">Source</a> <a href="#v:delFromHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:addToHpt" class="def">addToHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> <a href="src/GHC.Driver.Types.html#addToHpt" class="link">Source</a> <a href="#v:addToHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:addListToHpt" class="def">addListToHpt</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; [(<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>, <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a>)] -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> <a href="src/GHC.Driver.Types.html#addListToHpt" class="link">Source</a> <a href="#v:addListToHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:lookupHptDirectly" class="def">lookupHptDirectly</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Types-Unique.html#t:Unique" title="GHC.Types.Unique">Unique</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> <a href="src/GHC.Driver.Types.html#lookupHptDirectly" class="link">Source</a> <a href="#v:lookupHptDirectly" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:listToHpt" class="def">listToHpt</a> :: [(<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>, <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a>)] -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> <a href="src/GHC.Driver.Types.html#listToHpt" class="link">Source</a> <a href="#v:listToHpt" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:hptCompleteSigs" class="def">hptCompleteSigs</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>] <a href="src/GHC.Driver.Types.html#hptCompleteSigs" class="link">Source</a> <a href="#v:hptCompleteSigs" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:hptInstances" class="def">hptInstances</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; (<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>) -&gt; ([<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>], [<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>]) <a href="src/GHC.Driver.Types.html#hptInstances" class="link">Source</a> <a href="#v:hptInstances" class="selflink">#</a></p><div class="doc"><p>Find all the instance declarations (of classes and families) from
 the Home Package Table filtered by the provided predicate function.
 Used in <code>tcRnImports</code>, to select the instances that are in the
 transitive closure of imports from the currently compiled module.</p></div></div><div class="top"><p class="src"><a id="v:hptRules" class="def">hptRules</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; [<a href="GHC-Unit-Types.html#t:ModuleNameWithIsBoot" title="GHC.Unit.Types">ModuleNameWithIsBoot</a>] -&gt; [<a href="GHC-Core.html#t:CoreRule" title="GHC.Core">CoreRule</a>] <a href="src/GHC.Driver.Types.html#hptRules" class="link">Source</a> <a href="#v:hptRules" class="selflink">#</a></p><div class="doc"><p>Get rules from modules &quot;below&quot; this one (in the dependency sense)</p></div></div><div class="top"><p class="src"><a id="v:pprHPT" class="def">pprHPT</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Driver.Types.html#pprHPT" class="link">Source</a> <a href="#v:pprHPT" class="selflink">#</a></p></div><a href="#g:7" id="g:7"><h1>State relating to known packages</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ExternalPackageState" class="def">ExternalPackageState</a> <a href="src/GHC.Driver.Types.html#ExternalPackageState" class="link">Source</a> <a href="#t:ExternalPackageState" class="selflink">#</a></p><div class="doc"><p>Information about other packages that we have slurped in by reading
 their interface files</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:EPS" class="def">EPS</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:eps_is_boot" class="def">eps_is_boot</a> :: !(<a href="GHC-Unit-Module-Env.html#t:ModuleNameEnv" title="GHC.Unit.Module.Env">ModuleNameEnv</a> <a href="GHC-Unit-Types.html#t:ModuleNameWithIsBoot" title="GHC.Unit.Types">ModuleNameWithIsBoot</a>)</dfn><div class="doc"><p>In OneShot mode (only), home-package modules
 accumulate in the external package state, and are
 sucked in lazily.  For these home-pkg modules
 (only) we need to record which are boot modules.
 We set this field after loading all the
 explicitly-imported interfaces, but before doing
 anything else</p><p>The <code><a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></code> part is not necessary, but it's useful for
 debug prints, and it's convenient because this field comes
 direct from <code><a href="GHC-Tc-Utils.html#v:imp_dep_mods" title="GHC.Tc.Utils">imp_dep_mods</a></code></p></div></li><li><dfn class="src"><a id="v:eps_PIT" class="def">eps_PIT</a> :: !<a href="GHC-Driver-Types.html#t:PackageIfaceTable" title="GHC.Driver.Types">PackageIfaceTable</a></dfn><div class="doc"><p>The <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code>s for modules in external packages
 whose interfaces we have opened.
 The declarations in these interface files are held in the
 <code>eps_decls</code>, <code><a href="GHC-Driver-Types.html#v:eps_inst_env" title="GHC.Driver.Types">eps_inst_env</a></code>, <code><a href="GHC-Driver-Types.html#v:eps_fam_inst_env" title="GHC.Driver.Types">eps_fam_inst_env</a></code> and <code>eps_rules</code>
 fields of this record, not in the <code><a href="GHC-Driver-Types.html#v:mi_decls" title="GHC.Driver.Types">mi_decls</a></code> fields of the
 interface we have sucked in.</p><p>What <em>is</em> in the PIT is:</p><ul><li>The Module</li><li>Fingerprint info</li><li>Its exports</li><li>Fixities</li><li>Deprecations and warnings</li></ul></div></li><li><dfn class="src"><a id="v:eps_free_holes" class="def">eps_free_holes</a> :: <a href="GHC-Unit-Module-Env.html#t:InstalledModuleEnv" title="GHC.Unit.Module.Env">InstalledModuleEnv</a> (<a href="GHC-Types-Unique-DSet.html#t:UniqDSet" title="GHC.Types.Unique.DSet">UniqDSet</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>)</dfn><div class="doc"><p>Cache for <code><a href="GHC-Driver-Types.html#v:mi_free_holes" title="GHC.Driver.Types">mi_free_holes</a></code>.  Ordinarily, we can rely on
 the <code><a href="GHC-Driver-Types.html#v:eps_PIT" title="GHC.Driver.Types">eps_PIT</a></code> for this information, EXCEPT that when
 we do dependency analysis, we need to look at the
 <code><a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a></code> of our imports to determine what their
 precise free holes are (<code>moduleFreeHolesPrecise</code>).  We
 don't want to repeatedly reread in the interface
 for every import, so cache it here.  When the PIT
 gets filled in we can drop these entries.</p></div></li><li><dfn class="src"><a id="v:eps_PTE" class="def">eps_PTE</a> :: !<a href="GHC-Driver-Types.html#t:PackageTypeEnv" title="GHC.Driver.Types">PackageTypeEnv</a></dfn><div class="doc"><p>Result of typechecking all the external package
 interface files we have sucked in. The domain of
 the mapping is external-package modules</p></div></li><li><dfn class="src"><a id="v:eps_inst_env" class="def">eps_inst_env</a> :: !<a href="GHC-Driver-Types.html#t:PackageInstEnv" title="GHC.Driver.Types">PackageInstEnv</a></dfn><div class="doc"><p>The total <code><a href="GHC-Core-InstEnv.html#t:InstEnv" title="GHC.Core.InstEnv">InstEnv</a></code> accumulated
 from all the external-package modules</p></div></li><li><dfn class="src"><a id="v:eps_fam_inst_env" class="def">eps_fam_inst_env</a> :: !<a href="GHC-Driver-Types.html#t:PackageFamInstEnv" title="GHC.Driver.Types">PackageFamInstEnv</a></dfn><div class="doc"><p>The total <code><a href="GHC-Core-FamInstEnv.html#t:FamInstEnv" title="GHC.Core.FamInstEnv">FamInstEnv</a></code> accumulated
 from all the external-package modules</p></div></li><li><dfn class="src"><a id="v:eps_rule_base" class="def">eps_rule_base</a> :: !<a href="GHC-Driver-Types.html#t:PackageRuleBase" title="GHC.Driver.Types">PackageRuleBase</a></dfn><div class="doc"><p>The total <code>RuleEnv</code> accumulated
 from all the external-package modules</p></div></li><li><dfn class="src"><a id="v:eps_ann_env" class="def">eps_ann_env</a> :: !PackageAnnEnv</dfn><div class="doc"><p>The total <code><a href="GHC-Types-Annotations.html#t:AnnEnv" title="GHC.Types.Annotations">AnnEnv</a></code> accumulated
 from all the external-package modules</p></div></li><li><dfn class="src"><a id="v:eps_complete_matches" class="def">eps_complete_matches</a> :: !<a href="GHC-Driver-Types.html#t:PackageCompleteMatchMap" title="GHC.Driver.Types">PackageCompleteMatchMap</a></dfn><div class="doc"><p>The total <code><a href="GHC-Driver-Types.html#t:CompleteMatchMap" title="GHC.Driver.Types">CompleteMatchMap</a></code> accumulated
 from all the external-package modules</p></div></li><li><dfn class="src"><a id="v:eps_mod_fam_inst_env" class="def">eps_mod_fam_inst_env</a> :: !(<a href="GHC-Unit-Module-Env.html#t:ModuleEnv" title="GHC.Unit.Module.Env">ModuleEnv</a> <a href="GHC-Core-FamInstEnv.html#t:FamInstEnv" title="GHC.Core.FamInstEnv">FamInstEnv</a>)</dfn><div class="doc"><p>The family instances accumulated from external
 packages, keyed off the module that declared them</p></div></li><li><dfn class="src"><a id="v:eps_stats" class="def">eps_stats</a> :: !<a href="GHC-Driver-Types.html#t:EpsStats" title="GHC.Driver.Types">EpsStats</a></dfn><div class="doc"><p>Stastics about what was loaded from external packages</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:EpsStats" class="def">EpsStats</a> <a href="src/GHC.Driver.Types.html#EpsStats" class="link">Source</a> <a href="#t:EpsStats" class="selflink">#</a></p><div class="doc"><p>Accumulated statistics about what we are putting into the <code><a href="GHC-Driver-Types.html#t:ExternalPackageState" title="GHC.Driver.Types">ExternalPackageState</a></code>.
 &quot;In&quot; means stuff that is just <em>read</em> from interface files,
 &quot;Out&quot; means actually sucked in and type-checked</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:EpsStats" class="def">EpsStats</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:n_ifaces_in" class="def">n_ifaces_in</a>, <a id="v:n_decls_in" class="def">n_decls_in</a>, <a id="v:n_decls_out" class="def">n_decls_out</a>, <a id="v:n_rules_in" class="def">n_rules_in</a>, <a id="v:n_rules_out" class="def">n_rules_out</a>, <a id="v:n_insts_in" class="def">n_insts_in</a>, <a id="v:n_insts_out" class="def">n_insts_out</a> :: !<a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a></dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><a id="v:addEpsInStats" class="def">addEpsInStats</a> :: <a href="GHC-Driver-Types.html#t:EpsStats" title="GHC.Driver.Types">EpsStats</a> -&gt; <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Driver-Types.html#t:EpsStats" title="GHC.Driver.Types">EpsStats</a> <a href="src/GHC.Driver.Types.html#addEpsInStats" class="link">Source</a> <a href="#v:addEpsInStats" class="selflink">#</a></p><div class="doc"><p>Add stats for one newly-read interface</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:PackageTypeEnv" class="def">PackageTypeEnv</a> = <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> <a href="src/GHC.Driver.Types.html#PackageTypeEnv" class="link">Source</a> <a href="#t:PackageTypeEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:PackageIfaceTable" class="def">PackageIfaceTable</a> = <a href="GHC-Unit-Module-Env.html#t:ModuleEnv" title="GHC.Unit.Module.Env">ModuleEnv</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="src/GHC.Driver.Types.html#PackageIfaceTable" class="link">Source</a> <a href="#t:PackageIfaceTable" class="selflink">#</a></p><div class="doc"><p>Helps us find information about modules in the imported packages</p></div></div><div class="top"><p class="src"><a id="v:emptyPackageIfaceTable" class="def">emptyPackageIfaceTable</a> :: <a href="GHC-Driver-Types.html#t:PackageIfaceTable" title="GHC.Driver.Types">PackageIfaceTable</a> <a href="src/GHC.Driver.Types.html#emptyPackageIfaceTable" class="link">Source</a> <a href="#v:emptyPackageIfaceTable" class="selflink">#</a></p><div class="doc"><p>Constructs an empty PackageIfaceTable</p></div></div><div class="top"><p class="src"><a id="v:lookupIfaceByModule" class="def">lookupIfaceByModule</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Driver-Types.html#t:PackageIfaceTable" title="GHC.Driver.Types">PackageIfaceTable</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="src/GHC.Driver.Types.html#lookupIfaceByModule" class="link">Source</a> <a href="#v:lookupIfaceByModule" class="selflink">#</a></p><div class="doc"><p>Find the <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code> for a <code><a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></code>, searching in both the loaded home
 and external package module information</p></div></div><div class="top"><p class="src"><a id="v:emptyPartialModIface" class="def">emptyPartialModIface</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Driver-Types.html#t:PartialModIface" title="GHC.Driver.Types">PartialModIface</a> <a href="src/GHC.Driver.Types.html#emptyPartialModIface" class="link">Source</a> <a href="#v:emptyPartialModIface" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:emptyFullModIface" class="def">emptyFullModIface</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="src/GHC.Driver.Types.html#emptyFullModIface" class="link">Source</a> <a href="#v:emptyFullModIface" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:lookupHptByModule" class="def">lookupHptByModule</a> :: <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a> <a href="src/GHC.Driver.Types.html#lookupHptByModule" class="link">Source</a> <a href="#v:lookupHptByModule" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:PackageInstEnv" class="def">PackageInstEnv</a> = <a href="GHC-Core-InstEnv.html#t:InstEnv" title="GHC.Core.InstEnv">InstEnv</a> <a href="src/GHC.Driver.Types.html#PackageInstEnv" class="link">Source</a> <a href="#t:PackageInstEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:PackageFamInstEnv" class="def">PackageFamInstEnv</a> = <a href="GHC-Core-FamInstEnv.html#t:FamInstEnv" title="GHC.Core.FamInstEnv">FamInstEnv</a> <a href="src/GHC.Driver.Types.html#PackageFamInstEnv" class="link">Source</a> <a href="#t:PackageFamInstEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:PackageRuleBase" class="def">PackageRuleBase</a> = <a href="GHC-Core.html#t:RuleBase" title="GHC.Core">RuleBase</a> <a href="src/GHC.Driver.Types.html#PackageRuleBase" class="link">Source</a> <a href="#t:PackageRuleBase" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:PackageCompleteMatchMap" class="def">PackageCompleteMatchMap</a> = <a href="GHC-Driver-Types.html#t:CompleteMatchMap" title="GHC.Driver.Types">CompleteMatchMap</a> <a href="src/GHC.Driver.Types.html#PackageCompleteMatchMap" class="link">Source</a> <a href="#t:PackageCompleteMatchMap" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mkSOName" class="def">mkSOName</a> :: <a href="GHC-Settings.html#t:Platform" title="GHC.Settings">Platform</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> <a href="src/GHC.Driver.Types.html#mkSOName" class="link">Source</a> <a href="#v:mkSOName" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mkHsSOName" class="def">mkHsSOName</a> :: <a href="GHC-Settings.html#t:Platform" title="GHC.Settings">Platform</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> <a href="src/GHC.Driver.Types.html#mkHsSOName" class="link">Source</a> <a href="#v:mkHsSOName" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:soExt" class="def">soExt</a> :: <a href="GHC-Settings.html#t:Platform" title="GHC.Settings">Platform</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> <a href="src/GHC.Driver.Types.html#soExt" class="link">Source</a> <a href="#v:soExt" class="selflink">#</a></p></div><a href="#g:8" id="g:8"><h1>Metaprogramming</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:MetaRequest" class="def">MetaRequest</a> <a href="src/GHC.Driver.Types.html#MetaRequest" class="link">Source</a> <a href="#t:MetaRequest" class="selflink">#</a></p><div class="doc"><p>The supported metaprogramming result types</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:MetaE" class="def">MetaE</a> (<a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a> -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:MetaP" class="def">MetaP</a> (<a href="GHC-Hs-Pat.html#t:LPat" title="GHC.Hs.Pat">LPat</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a> -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:MetaT" class="def">MetaT</a> (<a href="GHC-Hs-Type.html#t:LHsType" title="GHC.Hs.Type">LHsType</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a> -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:MetaD" class="def">MetaD</a> ([<a href="GHC-Hs-Decls.html#t:LHsDecl" title="GHC.Hs.Decls">LHsDecl</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>] -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:MetaAW" class="def">MetaAW</a> (<a href="../ghc-boot/GHC-Serialized.html#t:Serialized" title="GHC.Serialized">Serialized</a> -&gt; <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a>)</td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:MetaResult" class="def">MetaResult</a> <a href="src/GHC.Driver.Types.html#MetaResult" class="link">Source</a> <a href="#t:MetaResult" class="selflink">#</a></p><div class="doc"><p>data constructors not exported to ensure correct result type</p></div></div><div class="top"><p class="src"><a id="v:metaRequestE" class="def">metaRequestE</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f (<a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>) <a href="src/GHC.Driver.Types.html#metaRequestE" class="link">Source</a> <a href="#v:metaRequestE" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:metaRequestP" class="def">metaRequestP</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f (<a href="GHC-Hs-Pat.html#t:LPat" title="GHC.Hs.Pat">LPat</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>) <a href="src/GHC.Driver.Types.html#metaRequestP" class="link">Source</a> <a href="#v:metaRequestP" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:metaRequestT" class="def">metaRequestT</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f (<a href="GHC-Hs-Type.html#t:LHsType" title="GHC.Hs.Type">LHsType</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>) <a href="src/GHC.Driver.Types.html#metaRequestT" class="link">Source</a> <a href="#v:metaRequestT" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:metaRequestD" class="def">metaRequestD</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f [<a href="GHC-Hs-Decls.html#t:LHsDecl" title="GHC.Hs.Decls">LHsDecl</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>] <a href="src/GHC.Driver.Types.html#metaRequestD" class="link">Source</a> <a href="#v:metaRequestD" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:metaRequestAW" class="def">metaRequestAW</a> :: <a href="GHC-Prelude.html#t:Functor" title="GHC.Prelude">Functor</a> f =&gt; <a href="GHC-Driver-Types.html#t:MetaHook" title="GHC.Driver.Types">MetaHook</a> f -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f <a href="../ghc-boot/GHC-Serialized.html#t:Serialized" title="GHC.Serialized">Serialized</a> <a href="src/GHC.Driver.Types.html#metaRequestAW" class="link">Source</a> <a href="#v:metaRequestAW" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:MetaHook" class="def">MetaHook</a> f = <a href="GHC-Driver-Types.html#t:MetaRequest" title="GHC.Driver.Types">MetaRequest</a> -&gt; <a href="GHC-Hs-Expr.html#t:LHsExpr" title="GHC.Hs.Expr">LHsExpr</a> <a href="GHC-Hs-Extension.html#t:GhcTc" title="GHC.Hs.Extension">GhcTc</a> -&gt; f <a href="GHC-Driver-Types.html#t:MetaResult" title="GHC.Driver.Types">MetaResult</a> <a href="src/GHC.Driver.Types.html#MetaHook" class="link">Source</a> <a href="#t:MetaHook" class="selflink">#</a></p></div><a href="#g:9" id="g:9"><h1>Annotations</h1></a><div class="top"><p class="src"><a id="v:prepareAnnotations" class="def">prepareAnnotations</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:ModGuts" title="GHC.Driver.Types">ModGuts</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Types-Annotations.html#t:AnnEnv" title="GHC.Types.Annotations">AnnEnv</a> <a href="src/GHC.Driver.Types.html#prepareAnnotations" class="link">Source</a> <a href="#v:prepareAnnotations" class="selflink">#</a></p><div class="doc"><p>Deal with gathering annotations in from all possible places
   and combining them into a single <code><a href="GHC-Types-Annotations.html#t:AnnEnv" title="GHC.Types.Annotations">AnnEnv</a></code></p></div></div><a href="#g:10" id="g:10"><h1>Interactive context</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:InteractiveContext" class="def">InteractiveContext</a> <a href="src/GHC.Driver.Types.html#InteractiveContext" class="link">Source</a> <a href="#t:InteractiveContext" class="selflink">#</a></p><div class="doc"><p>Interactive context, recording information about the state of the
 context in which statements are executed in a GHCi session.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:InteractiveContext" class="def">InteractiveContext</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:ic_dflags" class="def">ic_dflags</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></dfn><div class="doc"><p>The <code><a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a></code> used to evaluate interactive expressions
 and statements.</p></div></li><li><dfn class="src"><a id="v:ic_mod_index" class="def">ic_mod_index</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a></dfn><div class="doc"><p>Each GHCi stmt or declaration brings some new things into
 scope. We give them names like interactive:Ghci9.T,
 where the ic_index is the '9'.  The ic_mod_index is
 incremented whenever we add something to ic_tythings
 See Note [The interactive package]</p></div></li><li><dfn class="src"><a id="v:ic_imports" class="def">ic_imports</a> :: [<a href="GHC-Driver-Types.html#t:InteractiveImport" title="GHC.Driver.Types">InteractiveImport</a>]</dfn><div class="doc"><p>The GHCi top-level scope (ic_rn_gbl_env) is extended with
 these imports</p><p>This field is only stored here so that the client
 can retrieve it with GHC.getContext. GHC itself doesn't
 use it, but does reset it to empty sometimes (such
 as before a GHC.load). The context is set with GHC.setContext.</p></div></li><li><dfn class="src"><a id="v:ic_tythings" class="def">ic_tythings</a> :: [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>]</dfn><div class="doc"><p>TyThings defined by the user, in reverse order of
 definition (ie most recent at the front)
 See Note [ic_tythings]</p></div></li><li><dfn class="src"><a id="v:ic_rn_gbl_env" class="def">ic_rn_gbl_env</a> :: <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a></dfn><div class="doc"><p>The cached <code><a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a></code>, built by
 <code><a href="GHC-Runtime-Eval.html#v:setContext" title="GHC.Runtime.Eval">setContext</a></code> and updated regularly
 It contains everything in scope at the command line,
 including everything in ic_tythings</p></div></li><li><dfn class="src"><a id="v:ic_instances" class="def">ic_instances</a> :: ([<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>], [<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>])</dfn><div class="doc"><p>All instances and family instances created during
 this session.  These are grabbed en masse after each
 update to be sure that proper overlapping is retained.
 That is, rather than re-check the overlapping each
 time we update the context, we just take the results
 from the instance code that already does that.</p></div></li><li><dfn class="src"><a id="v:ic_fix_env" class="def">ic_fix_env</a> :: <a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a></dfn><div class="doc"><p>Fixities declared in let statements</p></div></li><li><dfn class="src"><a id="v:ic_default" class="def">ic_default</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> [<a href="GHC-Core-Type.html#t:Type" title="GHC.Core.Type">Type</a>]</dfn><div class="doc"><p>The current default types, set by a 'default' declaration</p></div></li><li><dfn class="src"><a id="v:ic_resume" class="def">ic_resume</a> :: [<a href="GHC-Runtime-Eval-Types.html#t:Resume" title="GHC.Runtime.Eval.Types">Resume</a>]</dfn><div class="doc"><p>The stack of breakpoint contexts</p></div></li><li><dfn class="src"><a id="v:ic_monad" class="def">ic_monad</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></dfn><div class="doc"><p>The monad that GHCi is executing in</p></div></li><li><dfn class="src"><a id="v:ic_int_print" class="def">ic_int_print</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></dfn><div class="doc"><p>The function that is used for printing results
 of expressions in ghci and -e mode.</p></div></li><li><dfn class="src"><a id="v:ic_cwd" class="def">ic_cwd</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><a id="v:emptyInteractiveContext" class="def">emptyInteractiveContext</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> <a href="src/GHC.Driver.Types.html#emptyInteractiveContext" class="link">Source</a> <a href="#v:emptyInteractiveContext" class="selflink">#</a></p><div class="doc"><p>Constructs an empty InteractiveContext.</p></div></div><div class="top"><p class="src"><a id="v:icPrintUnqual" class="def">icPrintUnqual</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; <a href="GHC-Utils-Outputable.html#t:PrintUnqualified" title="GHC.Utils.Outputable">PrintUnqualified</a> <a href="src/GHC.Driver.Types.html#icPrintUnqual" class="link">Source</a> <a href="#v:icPrintUnqual" class="selflink">#</a></p><div class="doc"><p>Get the PrintUnqualified function based on the flags and this InteractiveContext</p></div></div><div class="top"><p class="src"><a id="v:icInScopeTTs" class="def">icInScopeTTs</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] <a href="src/GHC.Driver.Types.html#icInScopeTTs" class="link">Source</a> <a href="#v:icInScopeTTs" class="selflink">#</a></p><div class="doc"><p>This function returns the list of visible TyThings (useful for
 e.g. showBindings)</p></div></div><div class="top"><p class="src"><a id="v:icExtendGblRdrEnv" class="def">icExtendGblRdrEnv</a> :: <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a> <a href="src/GHC.Driver.Types.html#icExtendGblRdrEnv" class="link">Source</a> <a href="#v:icExtendGblRdrEnv" class="selflink">#</a></p><div class="doc"><p>Add TyThings to the GlobalRdrEnv, earlier ones in the list shadowing
 later ones, and shadowing existing entries in the GlobalRdrEnv.</p></div></div><div class="top"><p class="src"><a id="v:extendInteractiveContext" class="def">extendInteractiveContext</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; [<a href="GHC-Core-InstEnv.html#t:ClsInst" title="GHC.Core.InstEnv">ClsInst</a>] -&gt; [<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>] -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> [<a href="GHC-Core-Type.html#t:Type" title="GHC.Core.Type">Type</a>] -&gt; <a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> <a href="src/GHC.Driver.Types.html#extendInteractiveContext" class="link">Source</a> <a href="#v:extendInteractiveContext" class="selflink">#</a></p><div class="doc"><p>extendInteractiveContext is called with new TyThings recently defined to update the
 InteractiveContext to include them.  Ids are easily removed when shadowed,
 but Classes and TyCons are not.  Some work could be done to determine
 whether they are entirely shadowed, but as you could still have references
 to them (e.g. instances for classes or values of the type for TyCons), it's
 not clear whether removing them is even the appropriate behavior.</p></div></div><div class="top"><p class="src"><a id="v:extendInteractiveContextWithIds" class="def">extendInteractiveContextWithIds</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; [<a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a>] -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> <a href="src/GHC.Driver.Types.html#extendInteractiveContextWithIds" class="link">Source</a> <a href="#v:extendInteractiveContextWithIds" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:substInteractiveContext" class="def">substInteractiveContext</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; <a href="GHC-Core-Type.html#t:TCvSubst" title="GHC.Core.Type">TCvSubst</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> <a href="src/GHC.Driver.Types.html#substInteractiveContext" class="link">Source</a> <a href="#v:substInteractiveContext" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:setInteractivePrintName" class="def">setInteractivePrintName</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> <a href="src/GHC.Driver.Types.html#setInteractivePrintName" class="link">Source</a> <a href="#v:setInteractivePrintName" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:icInteractiveModule" class="def">icInteractiveModule</a> :: <a href="GHC-Driver-Types.html#t:InteractiveContext" title="GHC.Driver.Types">InteractiveContext</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> <a href="src/GHC.Driver.Types.html#icInteractiveModule" class="link">Source</a> <a href="#v:icInteractiveModule" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:InteractiveImport" class="def">InteractiveImport</a> <a href="src/GHC.Driver.Types.html#InteractiveImport" class="link">Source</a> <a href="#t:InteractiveImport" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:IIDecl" class="def">IIDecl</a> (<a href="GHC-Hs-ImpExp.html#t:ImportDecl" title="GHC.Hs.ImpExp">ImportDecl</a> <a href="GHC-Hs-Extension.html#t:GhcPs" title="GHC.Hs.Extension">GhcPs</a>)</td><td class="doc"><p>Bring the exports of a particular module
 (filtered by an import decl) into scope</p></td></tr><tr><td class="src"><a id="v:IIModule" class="def">IIModule</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></td><td class="doc"><p>Bring into scope the entire top-level envt of
 of this module, including the things imported
 into it.</p></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:InteractiveImport">Instances</h4><details id="i:InteractiveImport" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:InteractiveImport:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:InteractiveImport" title="GHC.Driver.Types">InteractiveImport</a></span> <a href="src/GHC.Driver.Types.html#line-1905" class="link">Source</a> <a href="#t:InteractiveImport" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:InteractiveImport:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:InteractiveImport" title="GHC.Driver.Types">InteractiveImport</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:InteractiveImport" title="GHC.Driver.Types">InteractiveImport</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:setInteractivePackage" class="def">setInteractivePackage</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> <a href="src/GHC.Driver.Types.html#setInteractivePackage" class="link">Source</a> <a href="#v:setInteractivePackage" class="selflink">#</a></p><div class="doc"><p>Set the <code><a href="DynFlags.html#v:homeUnitId" title="DynFlags">homeUnitId</a></code> to <code>interactive</code></p></div></div><div class="top"><p class="src"><a id="v:mkPrintUnqualified" class="def">mkPrintUnqualified</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a> -&gt; <a href="GHC-Utils-Outputable.html#t:PrintUnqualified" title="GHC.Utils.Outputable">PrintUnqualified</a> <a href="src/GHC.Driver.Types.html#mkPrintUnqualified" class="link">Source</a> <a href="#v:mkPrintUnqualified" class="selflink">#</a></p><div class="doc"><p>Creates some functions that work out the best ways to format
 names for the user according to a set of heuristics.</p></div></div><div class="top"><p class="src"><a id="v:pprModulePrefix" class="def">pprModulePrefix</a> :: <a href="GHC-Utils-Outputable.html#t:PprStyle" title="GHC.Utils.Outputable">PprStyle</a> -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Types.Name.html#pprModulePrefix" class="link">Source</a> <a href="#v:pprModulePrefix" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mkQualPackage" class="def">mkQualPackage</a> :: <a href="GHC-Unit-State.html#t:UnitState" title="GHC.Unit.State">UnitState</a> -&gt; <a href="GHC-Utils-Outputable.html#t:QueryQualifyPackage" title="GHC.Utils.Outputable">QueryQualifyPackage</a> <a href="src/GHC.Driver.Types.html#mkQualPackage" class="link">Source</a> <a href="#v:mkQualPackage" class="selflink">#</a></p><div class="doc"><p>Creates a function for formatting packages based on two heuristics:
 (1) don't qualify if the package in question is &quot;main&quot;, and (2) only qualify
 with a unit id if the package ID would be ambiguous.</p></div></div><div class="top"><p class="src"><a id="v:mkQualModule" class="def">mkQualModule</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Utils-Outputable.html#t:QueryQualifyModule" title="GHC.Utils.Outputable">QueryQualifyModule</a> <a href="src/GHC.Driver.Types.html#mkQualModule" class="link">Source</a> <a href="#v:mkQualModule" class="selflink">#</a></p><div class="doc"><p>Creates a function for formatting modules based on two heuristics:
 (1) if the module is the current module, don't qualify, and (2) if there
 is only one exposed package which exports this module, don't qualify.</p></div></div><div class="top"><p class="src"><a id="v:pkgQual" class="def">pkgQual</a> :: <a href="GHC-Unit-State.html#t:UnitState" title="GHC.Unit.State">UnitState</a> -&gt; <a href="GHC-Utils-Outputable.html#t:PrintUnqualified" title="GHC.Utils.Outputable">PrintUnqualified</a> <a href="src/GHC.Driver.Types.html#pkgQual" class="link">Source</a> <a href="#v:pkgQual" class="selflink">#</a></p><div class="doc"><p>A function which only qualifies package names if necessary; but
 qualifies all other identifiers.</p></div></div><a href="#g:11" id="g:11"><h1>Interfaces</h1></a><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:ModIface" class="def">ModIface</a> = <a href="GHC-Driver-Types.html#t:ModIface_" title="GHC.Driver.Types">ModIface_</a> 'ModIfaceFinal <a href="src/GHC.Driver.Types.html#ModIface" class="link">Source</a> <a href="#t:ModIface" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:PartialModIface" class="def">PartialModIface</a> = <a href="GHC-Driver-Types.html#t:ModIface_" title="GHC.Driver.Types">ModIface_</a> 'ModIfaceCore <a href="src/GHC.Driver.Types.html#PartialModIface" class="link">Source</a> <a href="#t:PartialModIface" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ModIface_" class="def">ModIface_</a> (phase :: ModIfacePhase) <a href="src/GHC.Driver.Types.html#ModIface_" class="link">Source</a> <a href="#t:ModIface_" class="selflink">#</a></p><div class="doc"><p>A <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code> plus a <code><a href="GHC-Driver-Types.html#t:ModDetails" title="GHC.Driver.Types">ModDetails</a></code> summarises everything we know
 about a compiled module.  The <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code> is the stuff *before* linking,
 and can be written out to an interface file. The 'ModDetails is after
 linking and can be completely recovered from just the <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code>.</p><p>When we read an interface file, we also construct a <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code> from it,
 except that we explicitly make the <code><a href="GHC-Driver-Types.html#v:mi_decls" title="GHC.Driver.Types">mi_decls</a></code> and a few other fields empty;
 as when reading we consolidate the declarations etc. into a number of indexed
 maps and environments in the <code><a href="GHC-Driver-Types.html#t:ExternalPackageState" title="GHC.Driver.Types">ExternalPackageState</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ModIface" class="def">ModIface</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:mi_module" class="def">mi_module</a> :: !<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></dfn><div class="doc"><p>Name of the module we are for</p></div></li><li><dfn class="src"><a id="v:mi_sig_of" class="def">mi_sig_of</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>)</dfn><div class="doc"><p>Are we a sig of another mod?</p></div></li><li><dfn class="src"><a id="v:mi_hsc_src" class="def">mi_hsc_src</a> :: !<a href="GHC-Driver-Types.html#t:HscSource" title="GHC.Driver.Types">HscSource</a></dfn><div class="doc"><p>Boot? Signature?</p></div></li><li><dfn class="src"><a id="v:mi_deps" class="def">mi_deps</a> :: <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a></dfn><div class="doc"><p>The dependencies of the module.  This is
 consulted for directly-imported modules, but not
 for anything else (hence lazy)</p></div></li><li><dfn class="src"><a id="v:mi_usages" class="def">mi_usages</a> :: [<a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a>]</dfn><div class="doc"><p>Usages; kept sorted so that it's easy to decide
 whether to write a new iface file (changing usages
 doesn't affect the hash of this module)
 NOT STRICT!  we read this field lazily from the interface file
 It is *only* consulted by the recompilation checker</p></div></li><li><dfn class="src"><a id="v:mi_exports" class="def">mi_exports</a> :: ![<a href="GHC-Driver-Types.html#t:IfaceExport" title="GHC.Driver.Types">IfaceExport</a>]</dfn><div class="doc"><p>Exports
 Kept sorted by (mod,occ), to make version comparisons easier
 Records the modules that are the declaration points for things
 exported by this module, and the <code><a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a></code>s of those things</p></div></li><li><dfn class="src"><a id="v:mi_used_th" class="def">mi_used_th</a> :: !<a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></dfn><div class="doc"><p>Module required TH splices when it was compiled.
 This disables recompilation avoidance (see #481).</p></div></li><li><dfn class="src"><a id="v:mi_fixities" class="def">mi_fixities</a> :: [(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a>)]</dfn><div class="doc"><p>Fixities
 NOT STRICT!  we read this field lazily from the interface file</p></div></li><li><dfn class="src"><a id="v:mi_warns" class="def">mi_warns</a> :: <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a></dfn><div class="doc"><p>Warnings
 NOT STRICT!  we read this field lazily from the interface file</p></div></li><li><dfn class="src"><a id="v:mi_anns" class="def">mi_anns</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceAnnotation" title="GHC.Iface.Syntax">IfaceAnnotation</a>]</dfn><div class="doc"><p>Annotations
 NOT STRICT!  we read this field lazily from the interface file</p></div></li><li><dfn class="src"><a id="v:mi_decls" class="def">mi_decls</a> :: [IfaceDeclExts phase]</dfn><div class="doc"><p>Type, class and variable declarations
 The hash of an Id changes if its fixity or deprecations change
      (as well as its type of course)
 Ditto data constructors, class operations, except that
 the hash of the parent class/tycon changes</p></div></li><li><dfn class="src"><a id="v:mi_globals" class="def">mi_globals</a> :: !(<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Types-Name-Reader.html#t:GlobalRdrEnv" title="GHC.Types.Name.Reader">GlobalRdrEnv</a>)</dfn><div class="doc"><p>Binds all the things defined at the top level in
 the <em>original source</em> code for this module. which
 is NOT the same as mi_exports, nor mi_decls (which
 may contains declarations for things not actually
 defined by the user).  Used for GHCi and for inspecting
 the contents of modules via the GHC API only.</p><p>(We need the source file to figure out the
 top-level environment, if we didn't compile this module
 from source then this field contains <code>Nothing</code>).</p><p>Strictly speaking this field should live in the
 <code><a href="GHC-Driver-Types.html#t:HomeModInfo" title="GHC.Driver.Types">HomeModInfo</a></code>, but that leads to more plumbing.</p></div></li><li><dfn class="src"><a id="v:mi_insts" class="def">mi_insts</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceClsInst" title="GHC.Iface.Syntax">IfaceClsInst</a>]</dfn><div class="doc"><p>Sorted class instance</p></div></li><li><dfn class="src"><a id="v:mi_fam_insts" class="def">mi_fam_insts</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceFamInst" title="GHC.Iface.Syntax">IfaceFamInst</a>]</dfn><div class="doc"><p>Sorted family instances</p></div></li><li><dfn class="src"><a id="v:mi_rules" class="def">mi_rules</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceRule" title="GHC.Iface.Syntax">IfaceRule</a>]</dfn><div class="doc"><p>Sorted rules</p></div></li><li><dfn class="src"><a id="v:mi_hpc" class="def">mi_hpc</a> :: !<a href="GHC-Driver-Types.html#t:AnyHpcUsage" title="GHC.Driver.Types">AnyHpcUsage</a></dfn><div class="doc"><p>True if this program uses Hpc at any point in the program.</p></div></li><li><dfn class="src"><a id="v:mi_trust" class="def">mi_trust</a> :: !<a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a></dfn><div class="doc"><p>Safe Haskell Trust information for this module.</p></div></li><li><dfn class="src"><a id="v:mi_trust_pkg" class="def">mi_trust_pkg</a> :: !<a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a></dfn><div class="doc"><p>Do we require the package this module resides in be trusted
 to trust this module? This is used for the situation where a
 module is Safe (so doesn't require the package be trusted
 itself) but imports some trustworthy modules from its own
 package (which does require its own package be trusted).
 See Note [Trust Own Package] in GHC.Rename.Names</p></div></li><li><dfn class="src"><a id="v:mi_complete_sigs" class="def">mi_complete_sigs</a> :: [<a href="GHC-Iface-Syntax.html#t:IfaceCompleteMatch" title="GHC.Iface.Syntax">IfaceCompleteMatch</a>]</dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:mi_doc_hdr" class="def">mi_doc_hdr</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Hs-Doc.html#t:HsDocString" title="GHC.Hs.Doc">HsDocString</a></dfn><div class="doc"><p>Module header.</p></div></li><li><dfn class="src"><a id="v:mi_decl_docs" class="def">mi_decl_docs</a> :: <a href="GHC-Hs-Doc.html#t:DeclDocMap" title="GHC.Hs.Doc">DeclDocMap</a></dfn><div class="doc"><p>Docs on declarations.</p></div></li><li><dfn class="src"><a id="v:mi_arg_docs" class="def">mi_arg_docs</a> :: <a href="GHC-Hs-Doc.html#t:ArgDocMap" title="GHC.Hs.Doc">ArgDocMap</a></dfn><div class="doc"><p>Docs on arguments.</p></div></li><li><dfn class="src"><a id="v:mi_final_exts" class="def">mi_final_exts</a> :: !(IfaceBackendExts phase)</dfn><div class="doc"><p>Either <code>()</code> or <code><a href="GHC-Driver-Types.html#t:ModIfaceBackend" title="GHC.Driver.Types">ModIfaceBackend</a></code> for
 a fully instantiated interface.</p></div></li><li><dfn class="src"><a id="v:mi_ext_fields" class="def">mi_ext_fields</a> :: <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a></dfn><div class="doc"><p>Additional optional fields, where the Map key represents
 the field name, resulting in a (size, serialized data) pair.
 Because the data is intended to be serialized through the
 internal <code><a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a></code> class (increasing compatibility with types
 using <code><a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></code> and <code><a href="GHC-Data-FastString.html#t:FastString" title="GHC.Data.FastString">FastString</a></code>, such as HIE), this format is
 chosen over <code>ByteString</code>s.</p></div></li></ul></div></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:ModIface_">Instances</h4><details id="i:ModIface_" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ModIface_:Binary:1"></span> <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></span> <a href="src/GHC.Driver.Types.html#line-1165" class="link">Source</a> <a href="#t:ModIface_" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:ModIface_:Binary:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:put_">put_</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Utils.Binary.html#put_" class="link">Source</a> <a href="#v:put_" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Utils-Binary.html#t:Bin" title="GHC.Utils.Binary">Bin</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a>) <a href="src/GHC.Utils.Binary.html#put" class="link">Source</a> <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:get">get</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="src/GHC.Utils.Binary.html#get" class="link">Source</a> <a href="#v:get" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ModIface_:NFData:2"></span> (<a href="../deepseq/Control-DeepSeq.html#t:NFData" title="Control.DeepSeq">NFData</a> (IfaceBackendExts phase), <a href="../deepseq/Control-DeepSeq.html#t:NFData" title="Control.DeepSeq">NFData</a> (IfaceDeclExts phase)) =&gt; <a href="../deepseq/Control-DeepSeq.html#t:NFData" title="Control.DeepSeq">NFData</a> (<a href="GHC-Driver-Types.html#t:ModIface_" title="GHC.Driver.Types">ModIface_</a> phase)</span> <a href="src/GHC.Driver.Types.html#line-3304" class="link">Source</a> <a href="#t:ModIface_" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:ModIface_:NFData:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:rnf">rnf</a> :: <a href="GHC-Driver-Types.html#t:ModIface_" title="GHC.Driver.Types">ModIface_</a> phase -&gt; () <a href="../deepseq/src/Control.DeepSeq.html#rnf" class="link">Source</a> <a href="#v:rnf" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ModIfaceBackend" class="def">ModIfaceBackend</a> <a href="src/GHC.Driver.Types.html#ModIfaceBackend" class="link">Source</a> <a href="#t:ModIfaceBackend" class="selflink">#</a></p><div class="doc"><p>Extends a PartialModIface with information which is either:
 * Computed after codegen
 * Or computed just before writing the iface to disk. (Hashes)
 In order to fully instantiate it.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ModIfaceBackend" class="def">ModIfaceBackend</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:mi_iface_hash" class="def">mi_iface_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Hash of the whole interface</p></div></li><li><dfn class="src"><a id="v:mi_mod_hash" class="def">mi_mod_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Hash of the ABI only</p></div></li><li><dfn class="src"><a id="v:mi_flag_hash" class="def">mi_flag_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Hash of the important flags used when compiling the module, excluding
 optimisation flags</p></div></li><li><dfn class="src"><a id="v:mi_opt_hash" class="def">mi_opt_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Hash of optimisation flags</p></div></li><li><dfn class="src"><a id="v:mi_hpc_hash" class="def">mi_hpc_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Hash of hpc flags</p></div></li><li><dfn class="src"><a id="v:mi_plugin_hash" class="def">mi_plugin_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Hash of plugins</p></div></li><li><dfn class="src"><a id="v:mi_orphan" class="def">mi_orphan</a> :: !<a href="GHC-Driver-Types.html#t:WhetherHasOrphans" title="GHC.Driver.Types">WhetherHasOrphans</a></dfn><div class="doc"><p>Whether this module has orphans</p></div></li><li><dfn class="src"><a id="v:mi_finsts" class="def">mi_finsts</a> :: !WhetherHasFamInst</dfn><div class="doc"><p>Whether this module has family instances. See Note [The type family
 instance consistency story].</p></div></li><li><dfn class="src"><a id="v:mi_exp_hash" class="def">mi_exp_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Hash of export list</p></div></li><li><dfn class="src"><a id="v:mi_orphan_hash" class="def">mi_orphan_hash</a> :: !<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Hash for orphan rules, class and family instances combined</p></div></li><li><dfn class="src"><a id="v:mi_warn_fn" class="def">mi_warn_fn</a> :: !(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a>)</dfn><div class="doc"><p>Cached lookup for <code><a href="GHC-Driver-Types.html#v:mi_warns" title="GHC.Driver.Types">mi_warns</a></code></p></div></li><li><dfn class="src"><a id="v:mi_fix_fn" class="def">mi_fix_fn</a> :: !(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a>)</dfn><div class="doc"><p>Cached lookup for <code><a href="GHC-Driver-Types.html#v:mi_fixities" title="GHC.Driver.Types">mi_fixities</a></code></p></div></li><li><dfn class="src"><a id="v:mi_hash_fn" class="def">mi_hash_fn</a> :: !(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>))</dfn><div class="doc"><p>Cached lookup for <code><a href="GHC-Driver-Types.html#v:mi_decls" title="GHC.Driver.Types">mi_decls</a></code>. The <code>Nothing</code> in <code><a href="GHC-Driver-Types.html#v:mi_hash_fn" title="GHC.Driver.Types">mi_hash_fn</a></code> means that
 the thing isn't in decls. It's useful to know that when seeing if we are
 up to date wrt. the old interface. The <code><a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a></code> is the parent of the
 name, if it has one.</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><a id="v:mkIfaceWarnCache" class="def">mkIfaceWarnCache</a> :: <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> <a href="src/GHC.Driver.Types.html#mkIfaceWarnCache" class="link">Source</a> <a href="#v:mkIfaceWarnCache" class="selflink">#</a></p><div class="doc"><p>Constructs the cache for the <code><a href="GHC-Driver-Types.html#v:mi_warn_fn" title="GHC.Driver.Types">mi_warn_fn</a></code> field of a <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code></p></div></div><div class="top"><p class="src"><a id="v:mkIfaceHashCache" class="def">mkIfaceHashCache</a> :: [(<a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>, <a href="GHC-Iface-Syntax.html#t:IfaceDecl" title="GHC.Iface.Syntax">IfaceDecl</a>)] -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>) <a href="src/GHC.Driver.Types.html#mkIfaceHashCache" class="link">Source</a> <a href="#v:mkIfaceHashCache" class="selflink">#</a></p><div class="doc"><p>Constructs cache for the <code><a href="GHC-Driver-Types.html#v:mi_hash_fn" title="GHC.Driver.Types">mi_hash_fn</a></code> field of a <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code></p></div></div><div class="top"><p class="src"><a id="v:mkIfaceFixCache" class="def">mkIfaceFixCache</a> :: [(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a>)] -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a> <a href="src/GHC.Driver.Types.html#mkIfaceFixCache" class="link">Source</a> <a href="#v:mkIfaceFixCache" class="selflink">#</a></p><div class="doc"><p>Creates cached lookup for the <code><a href="GHC-Driver-Types.html#v:mi_fix_fn" title="GHC.Driver.Types">mi_fix_fn</a></code> field of <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code></p></div></div><div class="top"><p class="src"><a id="v:emptyIfaceWarnCache" class="def">emptyIfaceWarnCache</a> :: <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> <a href="src/GHC.Driver.Types.html#emptyIfaceWarnCache" class="link">Source</a> <a href="#v:emptyIfaceWarnCache" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mi_boot" class="def">mi_boot</a> :: <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="src/GHC.Driver.Types.html#mi_boot" class="link">Source</a> <a href="#v:mi_boot" class="selflink">#</a></p><div class="doc"><p>Old-style accessor for whether or not the ModIface came from an hs-boot
 file.</p></div></div><div class="top"><p class="src"><a id="v:mi_fix" class="def">mi_fix</a> :: <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> -&gt; <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a> <a href="src/GHC.Driver.Types.html#mi_fix" class="link">Source</a> <a href="#v:mi_fix" class="selflink">#</a></p><div class="doc"><p>Lookups up a (possibly cached) fixity from a <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code>. If one cannot be
 found, <code><a href="GHC-Types-Basic.html#v:defaultFixity" title="GHC.Types.Basic">defaultFixity</a></code> is returned instead.</p></div></div><div class="top"><p class="src"><a id="v:mi_semantic_module" class="def">mi_semantic_module</a> :: <a href="GHC-Driver-Types.html#t:ModIface_" title="GHC.Driver.Types">ModIface_</a> a -&gt; <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a> <a href="src/GHC.Driver.Types.html#mi_semantic_module" class="link">Source</a> <a href="#v:mi_semantic_module" class="selflink">#</a></p><div class="doc"><p>The semantic module for this interface; e.g., if it's a interface
 for a signature, if <code><a href="GHC-Driver-Types.html#v:mi_module" title="GHC.Driver.Types">mi_module</a></code> is <code>p[A=<a href="A">A</a>]:A</code>, <code><a href="GHC-Driver-Types.html#v:mi_semantic_module" title="GHC.Driver.Types">mi_semantic_module</a></code>
 will be <code><a href="A">A</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:mi_free_holes" class="def">mi_free_holes</a> :: <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Types-Unique-DSet.html#t:UniqDSet" title="GHC.Types.Unique.DSet">UniqDSet</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> <a href="src/GHC.Driver.Types.html#mi_free_holes" class="link">Source</a> <a href="#v:mi_free_holes" class="selflink">#</a></p><div class="doc"><p>The &quot;precise&quot; free holes, e.g., the signatures that this
 <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code> depends on.</p></div></div><div class="top"><p class="src"><a id="v:renameFreeHoles" class="def">renameFreeHoles</a> :: <a href="GHC-Types-Unique-DSet.html#t:UniqDSet" title="GHC.Types.Unique.DSet">UniqDSet</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> -&gt; [(<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>, <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>)] -&gt; <a href="GHC-Types-Unique-DSet.html#t:UniqDSet" title="GHC.Types.Unique.DSet">UniqDSet</a> <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a> <a href="src/GHC.Driver.Types.html#renameFreeHoles" class="link">Source</a> <a href="#v:renameFreeHoles" class="selflink">#</a></p><div class="doc"><p>Given a set of free holes, and a unit identifier, rename
 the free holes according to the instantiation of the unit
 identifier.  For example, if we have A and B free, and
 our unit identity is <code>p[A=<a href="C">C</a>,B=impl:B]</code>, the renamed free
 holes are just C.</p></div></div><a href="#g:12" id="g:12"><h1>Fixity</h1></a><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:FixityEnv" class="def">FixityEnv</a> = <a href="GHC-Types-Name-Env.html#t:NameEnv" title="GHC.Types.Name.Env">NameEnv</a> <a href="GHC-Driver-Types.html#t:FixItem" title="GHC.Driver.Types">FixItem</a> <a href="src/GHC.Driver.Types.html#FixityEnv" class="link">Source</a> <a href="#t:FixityEnv" class="selflink">#</a></p><div class="doc"><p>Fixity environment mapping names to their fixities</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:FixItem" class="def">FixItem</a> <a href="src/GHC.Driver.Types.html#FixItem" class="link">Source</a> <a href="#t:FixItem" class="selflink">#</a></p><div class="doc"><p>Fixity information for an <code><a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></code>. We keep the OccName in the range
 so that we can generate an interface from it</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:FixItem" class="def">FixItem</a> <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:FixItem">Instances</h4><details id="i:FixItem" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:FixItem:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:FixItem" title="GHC.Driver.Types">FixItem</a></span> <a href="src/GHC.Driver.Types.html#line-2468" class="link">Source</a> <a href="#t:FixItem" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:FixItem:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:FixItem" title="GHC.Driver.Types">FixItem</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:FixItem" title="GHC.Driver.Types">FixItem</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:lookupFixity" class="def">lookupFixity</a> :: <a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Types-Basic.html#t:Fixity" title="GHC.Types.Basic">Fixity</a> <a href="src/GHC.Driver.Types.html#lookupFixity" class="link">Source</a> <a href="#v:lookupFixity" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:emptyFixityEnv" class="def">emptyFixityEnv</a> :: <a href="GHC-Driver-Types.html#t:FixityEnv" title="GHC.Driver.Types">FixityEnv</a> <a href="src/GHC.Driver.Types.html#emptyFixityEnv" class="link">Source</a> <a href="#v:emptyFixityEnv" class="selflink">#</a></p></div><a href="#g:13" id="g:13"><h1>TyThings and type environments</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:TyThing" class="def">TyThing</a> <a href="src/GHC.Core.TyCo.Rep.html#TyThing" class="link">Source</a> <a href="#t:TyThing" class="selflink">#</a></p><div class="doc"><p>A global typecheckable-thing, essentially anything that has a name.
 Not to be confused with a <code>TcTyThing</code>, which is also a typecheckable
 thing but in the *local* context.  See <a href="GHC-Tc-Utils-Env.html">GHC.Tc.Utils.Env</a> for how to retrieve
 a <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code> given a <code><a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:AnId" class="def">AnId</a> <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AConLike" class="def">AConLike</a> <a href="GHC-Core-ConLike.html#t:ConLike" title="GHC.Core.ConLike">ConLike</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:ATyCon" class="def">ATyCon</a> <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:ACoAxiom" class="def">ACoAxiom</a> (<a href="GHC-Core-Coercion-Axiom.html#t:CoAxiom" title="GHC.Core.Coercion.Axiom">CoAxiom</a> <a href="GHC-Core-Coercion-Axiom.html#t:Branched" title="GHC.Core.Coercion.Axiom">Branched</a>)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:TyThing">Instances</h4><details id="i:TyThing" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:TyThing:NamedThing:1"></span> <a href="GHC-Types-Name.html#t:NamedThing" title="GHC.Types.Name">NamedThing</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></span> <a href="src/GHC.Core.TyCo.Rep.html#line-143" class="link">Source</a> <a href="#t:TyThing" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:TyThing:NamedThing:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Core-TyCo-Rep.html">GHC.Core.TyCo.Rep</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:getOccName">getOccName</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a> <a href="src/GHC.Types.Name.html#getOccName" class="link">Source</a> <a href="#v:getOccName" class="selflink">#</a></p><p class="src"><a href="#v:getName">getName</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> <a href="src/GHC.Types.Name.html#getName" class="link">Source</a> <a href="#v:getName" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:TyThing:Outputable:2"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></span> <a href="src/GHC.Core.TyCo.Rep.html#line-140" class="link">Source</a> <a href="#t:TyThing" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:TyThing:Outputable:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Core-TyCo-Rep.html">GHC.Core.TyCo.Rep</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:tyThingAvailInfo" class="def">tyThingAvailInfo</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; [<a href="GHC-Types-Avail.html#t:AvailInfo" title="GHC.Types.Avail">AvailInfo</a>] <a href="src/GHC.Driver.Types.html#tyThingAvailInfo" class="link">Source</a> <a href="#v:tyThingAvailInfo" class="selflink">#</a></p><div class="doc"><p>The Names that a TyThing should bring into scope.  Used to build
 the GlobalRdrEnv for the InteractiveContext.</p></div></div><div class="top"><p class="src"><a id="v:tyThingTyCon" class="def">tyThingTyCon</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a> <a href="src/GHC.Driver.Types.html#tyThingTyCon" class="link">Source</a> <a href="#v:tyThingTyCon" class="selflink">#</a></p><div class="doc"><p>Get the <code><a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a></code> from a <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code> if it is a type constructor thing. Panics otherwise</p></div></div><div class="top"><p class="src"><a id="v:tyThingDataCon" class="def">tyThingDataCon</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a> <a href="src/GHC.Driver.Types.html#tyThingDataCon" class="link">Source</a> <a href="#v:tyThingDataCon" class="selflink">#</a></p><div class="doc"><p>Get the <code><a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a></code> from a <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code> if it is a data constructor thing. Panics otherwise</p></div></div><div class="top"><p class="src"><a id="v:tyThingConLike" class="def">tyThingConLike</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Core-ConLike.html#t:ConLike" title="GHC.Core.ConLike">ConLike</a> <a href="src/GHC.Driver.Types.html#tyThingConLike" class="link">Source</a> <a href="#v:tyThingConLike" class="selflink">#</a></p><div class="doc"><p>Get the <code><a href="GHC-Core-ConLike.html#t:ConLike" title="GHC.Core.ConLike">ConLike</a></code> from a <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code> if it is a data constructor thing.
 Panics otherwise</p></div></div><div class="top"><p class="src"><a id="v:tyThingId" class="def">tyThingId</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a> <a href="src/GHC.Driver.Types.html#tyThingId" class="link">Source</a> <a href="#v:tyThingId" class="selflink">#</a></p><div class="doc"><p>Get the <code><a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a></code> from a <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code> if it is a id *or* data constructor thing. Panics otherwise</p></div></div><div class="top"><p class="src"><a id="v:tyThingCoAxiom" class="def">tyThingCoAxiom</a> :: <a href="GHC-Utils-Misc.html#t:HasDebugCallStack" title="GHC.Utils.Misc">HasDebugCallStack</a> =&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Core-Coercion-Axiom.html#t:CoAxiom" title="GHC.Core.Coercion.Axiom">CoAxiom</a> <a href="GHC-Core-Coercion-Axiom.html#t:Branched" title="GHC.Core.Coercion.Axiom">Branched</a> <a href="src/GHC.Driver.Types.html#tyThingCoAxiom" class="link">Source</a> <a href="#v:tyThingCoAxiom" class="selflink">#</a></p><div class="doc"><p>Get the <code><a href="GHC-Core-Coercion-Axiom.html#t:CoAxiom" title="GHC.Core.Coercion.Axiom">CoAxiom</a></code> from a <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code> if it is a coercion axiom thing. Panics otherwise</p></div></div><div class="top"><p class="src"><a id="v:tyThingParent_maybe" class="def">tyThingParent_maybe</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#tyThingParent_maybe" class="link">Source</a> <a href="#v:tyThingParent_maybe" class="selflink">#</a></p><div class="doc"><p>tyThingParent_maybe x returns (Just p)
 when pprTyThingInContext should print a declaration for p
 (albeit with some &quot;...&quot; in it) when asked to show x
 It returns the *immediate* parent.  So a datacon returns its tycon
 but the tycon could be the associated type of a class, so it in turn
 might have a parent.</p></div></div><div class="top"><p class="src"><a id="v:tyThingsTyCoVars" class="def">tyThingsTyCoVars</a> :: [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Types-Var-Set.html#t:TyCoVarSet" title="GHC.Types.Var.Set">TyCoVarSet</a> <a href="src/GHC.Driver.Types.html#tyThingsTyCoVars" class="link">Source</a> <a href="#v:tyThingsTyCoVars" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:implicitTyThings" class="def">implicitTyThings</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] <a href="src/GHC.Driver.Types.html#implicitTyThings" class="link">Source</a> <a href="#v:implicitTyThings" class="selflink">#</a></p><div class="doc"><p>Determine the <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code>s brought into scope by another <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code>
 <em>other</em> than itself. For example, Id's don't have any implicit TyThings
 as they just bring themselves into scope, but classes bring their
 dictionary datatype, type constructor and some selector functions into
 scope, just for a start!</p></div></div><div class="top"><p class="src"><a id="v:implicitTyConThings" class="def">implicitTyConThings</a> :: <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] <a href="src/GHC.Driver.Types.html#implicitTyConThings" class="link">Source</a> <a href="#v:implicitTyConThings" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:implicitClassThings" class="def">implicitClassThings</a> :: <a href="GHC-Core-Class.html#t:Class" title="GHC.Core.Class">Class</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] <a href="src/GHC.Driver.Types.html#implicitClassThings" class="link">Source</a> <a href="#v:implicitClassThings" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:isImplicitTyThing" class="def">isImplicitTyThing</a> :: <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#isImplicitTyThing" class="link">Source</a> <a href="#v:isImplicitTyThing" class="selflink">#</a></p><div class="doc"><p>Returns <code>True</code> if there should be no interface-file declaration
 for this thing on its own: either it is built-in, or it is part
 of some other declaration, or it is generated implicitly by some
 other declaration.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:TypeEnv" class="def">TypeEnv</a> = <a href="GHC-Types-Name-Env.html#t:NameEnv" title="GHC.Types.Name.Env">NameEnv</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#TypeEnv" class="link">Source</a> <a href="#t:TypeEnv" class="selflink">#</a></p><div class="doc"><p>A map from <code><a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></code>s to <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code>s, constructed by typechecking
 local declarations or interface files</p></div></div><div class="top"><p class="src"><a id="v:lookupType" class="def">lookupType</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a> -&gt; <a href="GHC-Driver-Types.html#t:PackageTypeEnv" title="GHC.Driver.Types">PackageTypeEnv</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#lookupType" class="link">Source</a> <a href="#v:lookupType" class="selflink">#</a></p><div class="doc"><p>Find the <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code> for the given <code><a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></code> by using all the resources
 at our disposal: the compiled modules in the <code><a href="GHC-Driver-Types.html#t:HomePackageTable" title="GHC.Driver.Types">HomePackageTable</a></code> and the
 compiled modules in other packages that live in <code><a href="GHC-Driver-Types.html#t:PackageTypeEnv" title="GHC.Driver.Types">PackageTypeEnv</a></code>. Note
 that this does NOT look up the <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code> in the module being compiled: you
 have to do that yourself, if desired</p></div></div><div class="top"><p class="src"><a id="v:lookupTypeHscEnv" class="def">lookupTypeHscEnv</a> :: <a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>) <a href="src/GHC.Driver.Types.html#lookupTypeHscEnv" class="link">Source</a> <a href="#v:lookupTypeHscEnv" class="selflink">#</a></p><div class="doc"><p>As <code><a href="GHC-Driver-Types.html#v:lookupType" title="GHC.Driver.Types">lookupType</a></code>, but with a marginally easier-to-use interface
 if you have a <code><a href="GHC-Driver-Types.html#t:HscEnv" title="GHC.Driver.Types">HscEnv</a></code></p></div></div><div class="top"><p class="src"><a id="v:mkTypeEnv" class="def">mkTypeEnv</a> :: [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> <a href="src/GHC.Driver.Types.html#mkTypeEnv" class="link">Source</a> <a href="#v:mkTypeEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:emptyTypeEnv" class="def">emptyTypeEnv</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> <a href="src/GHC.Driver.Types.html#emptyTypeEnv" class="link">Source</a> <a href="#v:emptyTypeEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:typeEnvFromEntities" class="def">typeEnvFromEntities</a> :: [<a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a>] -&gt; [<a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a>] -&gt; [<a href="GHC-Core-FamInstEnv.html#t:FamInst" title="GHC.Core.FamInstEnv">FamInst</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> <a href="src/GHC.Driver.Types.html#typeEnvFromEntities" class="link">Source</a> <a href="#v:typeEnvFromEntities" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mkTypeEnvWithImplicits" class="def">mkTypeEnvWithImplicits</a> :: [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> <a href="src/GHC.Driver.Types.html#mkTypeEnvWithImplicits" class="link">Source</a> <a href="#v:mkTypeEnvWithImplicits" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:extendTypeEnv" class="def">extendTypeEnv</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> <a href="src/GHC.Driver.Types.html#extendTypeEnv" class="link">Source</a> <a href="#v:extendTypeEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:extendTypeEnvList" class="def">extendTypeEnvList</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> <a href="src/GHC.Driver.Types.html#extendTypeEnvList" class="link">Source</a> <a href="#v:extendTypeEnvList" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:extendTypeEnvWithIds" class="def">extendTypeEnvWithIds</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a>] -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> <a href="src/GHC.Driver.Types.html#extendTypeEnvWithIds" class="link">Source</a> <a href="#v:extendTypeEnvWithIds" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:plusTypeEnv" class="def">plusTypeEnv</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> <a href="src/GHC.Driver.Types.html#plusTypeEnv" class="link">Source</a> <a href="#v:plusTypeEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:lookupTypeEnv" class="def">lookupTypeEnv</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#lookupTypeEnv" class="link">Source</a> <a href="#v:lookupTypeEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:typeEnvElts" class="def">typeEnvElts</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a>] <a href="src/GHC.Driver.Types.html#typeEnvElts" class="link">Source</a> <a href="#v:typeEnvElts" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:typeEnvTyCons" class="def">typeEnvTyCons</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a>] <a href="src/GHC.Driver.Types.html#typeEnvTyCons" class="link">Source</a> <a href="#v:typeEnvTyCons" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:typeEnvIds" class="def">typeEnvIds</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a>] <a href="src/GHC.Driver.Types.html#typeEnvIds" class="link">Source</a> <a href="#v:typeEnvIds" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:typeEnvPatSyns" class="def">typeEnvPatSyns</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-PatSyn.html#t:PatSyn" title="GHC.Core.PatSyn">PatSyn</a>] <a href="src/GHC.Driver.Types.html#typeEnvPatSyns" class="link">Source</a> <a href="#v:typeEnvPatSyns" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:typeEnvDataCons" class="def">typeEnvDataCons</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a>] <a href="src/GHC.Driver.Types.html#typeEnvDataCons" class="link">Source</a> <a href="#v:typeEnvDataCons" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:typeEnvCoAxioms" class="def">typeEnvCoAxioms</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-Coercion-Axiom.html#t:CoAxiom" title="GHC.Core.Coercion.Axiom">CoAxiom</a> <a href="GHC-Core-Coercion-Axiom.html#t:Branched" title="GHC.Core.Coercion.Axiom">Branched</a>] <a href="src/GHC.Driver.Types.html#typeEnvCoAxioms" class="link">Source</a> <a href="#v:typeEnvCoAxioms" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:typeEnvClasses" class="def">typeEnvClasses</a> :: <a href="GHC-Driver-Types.html#t:TypeEnv" title="GHC.Driver.Types">TypeEnv</a> -&gt; [<a href="GHC-Core-Class.html#t:Class" title="GHC.Core.Class">Class</a>] <a href="src/GHC.Driver.Types.html#typeEnvClasses" class="link">Source</a> <a href="#v:typeEnvClasses" class="selflink">#</a></p></div><a href="#g:14" id="g:14"><h1>MonadThings</h1></a><div class="top"><p class="src"><span class="keyword">class</span> <a href="GHC-Prelude.html#t:Monad" title="GHC.Prelude">Monad</a> m =&gt; <a id="t:MonadThings" class="def">MonadThings</a> m <span class="keyword">where</span> <a href="src/GHC.Driver.Types.html#MonadThings" class="link">Source</a> <a href="#t:MonadThings" class="selflink">#</a></p><div class="doc"><p>Class that abstracts out the common ability of the monads in GHC
 to lookup a <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code> in the monadic environment by <code><a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></code>. Provides
 a number of related convenience functions for accessing particular
 kinds of <code><a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a></code></p></div><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src"><a href="GHC-Driver-Types.html#v:lookupThing" title="GHC.Driver.Types">lookupThing</a></p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a id="v:lookupThing" class="def">lookupThing</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; m <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#lookupThing" class="link">Source</a> <a href="#v:lookupThing" class="selflink">#</a></p><p class="src"><a id="v:lookupId" class="def">lookupId</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; m <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a> <a href="src/GHC.Driver.Types.html#lookupId" class="link">Source</a> <a href="#v:lookupId" class="selflink">#</a></p><p class="src"><a id="v:lookupDataCon" class="def">lookupDataCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; m <a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a> <a href="src/GHC.Driver.Types.html#lookupDataCon" class="link">Source</a> <a href="#v:lookupDataCon" class="selflink">#</a></p><p class="src"><a id="v:lookupTyCon" class="def">lookupTyCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; m <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a> <a href="src/GHC.Driver.Types.html#lookupTyCon" class="link">Source</a> <a href="#v:lookupTyCon" class="selflink">#</a></p></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:MonadThings">Instances</h4><details id="i:MonadThings" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:MonadThings:MonadThings:1"></span> <a href="GHC-Driver-Types.html#t:MonadThings" title="GHC.Driver.Types">MonadThings</a> <a href="GHC-Core-Opt-Monad.html#t:CoreM" title="GHC.Core.Opt.Monad">CoreM</a></span> <a href="src/GHC.Plugins.html#line-131" class="link">Source</a> <a href="#t:MonadThings" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:ic:MonadThings:MonadThings:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Plugins.html">GHC.Plugins</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:lookupThing">lookupThing</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Core-Opt-Monad.html#t:CoreM" title="GHC.Core.Opt.Monad">CoreM</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#lookupThing" class="link">Source</a> <a href="#v:lookupThing" class="selflink">#</a></p><p class="src"><a href="#v:lookupId">lookupId</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Core-Opt-Monad.html#t:CoreM" title="GHC.Core.Opt.Monad">CoreM</a> <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a> <a href="src/GHC.Driver.Types.html#lookupId" class="link">Source</a> <a href="#v:lookupId" class="selflink">#</a></p><p class="src"><a href="#v:lookupDataCon">lookupDataCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Core-Opt-Monad.html#t:CoreM" title="GHC.Core.Opt.Monad">CoreM</a> <a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a> <a href="src/GHC.Driver.Types.html#lookupDataCon" class="link">Source</a> <a href="#v:lookupDataCon" class="selflink">#</a></p><p class="src"><a href="#v:lookupTyCon">lookupTyCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Core-Opt-Monad.html#t:CoreM" title="GHC.Core.Opt.Monad">CoreM</a> <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a> <a href="src/GHC.Driver.Types.html#lookupTyCon" class="link">Source</a> <a href="#v:lookupTyCon" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:MonadThings:MonadThings:2"></span> <a href="GHC-Driver-Types.html#t:MonadThings" title="GHC.Driver.Types">MonadThings</a> <a href="GHC-Tc-Solver-Monad.html#t:TcS" title="GHC.Tc.Solver.Monad">TcS</a></span> <a href="src/GHC.Tc.Solver.Monad.html#line-2730" class="link">Source</a> <a href="#t:MonadThings" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:ic:MonadThings:MonadThings:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Tc-Solver-Monad.html">GHC.Tc.Solver.Monad</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:lookupThing">lookupThing</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Tc-Solver-Monad.html#t:TcS" title="GHC.Tc.Solver.Monad">TcS</a> <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#lookupThing" class="link">Source</a> <a href="#v:lookupThing" class="selflink">#</a></p><p class="src"><a href="#v:lookupId">lookupId</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Tc-Solver-Monad.html#t:TcS" title="GHC.Tc.Solver.Monad">TcS</a> <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a> <a href="src/GHC.Driver.Types.html#lookupId" class="link">Source</a> <a href="#v:lookupId" class="selflink">#</a></p><p class="src"><a href="#v:lookupDataCon">lookupDataCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Tc-Solver-Monad.html#t:TcS" title="GHC.Tc.Solver.Monad">TcS</a> <a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a> <a href="src/GHC.Driver.Types.html#lookupDataCon" class="link">Source</a> <a href="#v:lookupDataCon" class="selflink">#</a></p><p class="src"><a href="#v:lookupTyCon">lookupTyCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Tc-Solver-Monad.html#t:TcS" title="GHC.Tc.Solver.Monad">TcS</a> <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a> <a href="src/GHC.Driver.Types.html#lookupTyCon" class="link">Source</a> <a href="#v:lookupTyCon" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:MonadThings:MonadThings:3"></span> <a href="GHC-Driver-Types.html#t:MonadThings" title="GHC.Driver.Types">MonadThings</a> (<a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:DsGblEnv" title="GHC.Tc.Types">DsGblEnv</a> <a href="GHC-Tc-Types.html#t:DsLclEnv" title="GHC.Tc.Types">DsLclEnv</a>))</span> <a href="src/GHC.HsToCore.Monad.html#line-494" class="link">Source</a> <a href="#t:MonadThings" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:ic:MonadThings:MonadThings:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-HsToCore-Monad.html">GHC.HsToCore.Monad</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:lookupThing">lookupThing</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:DsGblEnv" title="GHC.Tc.Types">DsGblEnv</a> <a href="GHC-Tc-Types.html#t:DsLclEnv" title="GHC.Tc.Types">DsLclEnv</a>) <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#lookupThing" class="link">Source</a> <a href="#v:lookupThing" class="selflink">#</a></p><p class="src"><a href="#v:lookupId">lookupId</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:DsGblEnv" title="GHC.Tc.Types">DsGblEnv</a> <a href="GHC-Tc-Types.html#t:DsLclEnv" title="GHC.Tc.Types">DsLclEnv</a>) <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a> <a href="src/GHC.Driver.Types.html#lookupId" class="link">Source</a> <a href="#v:lookupId" class="selflink">#</a></p><p class="src"><a href="#v:lookupDataCon">lookupDataCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:DsGblEnv" title="GHC.Tc.Types">DsGblEnv</a> <a href="GHC-Tc-Types.html#t:DsLclEnv" title="GHC.Tc.Types">DsLclEnv</a>) <a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a> <a href="src/GHC.Driver.Types.html#lookupDataCon" class="link">Source</a> <a href="#v:lookupDataCon" class="selflink">#</a></p><p class="src"><a href="#v:lookupTyCon">lookupTyCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:DsGblEnv" title="GHC.Tc.Types">DsGblEnv</a> <a href="GHC-Tc-Types.html#t:DsLclEnv" title="GHC.Tc.Types">DsLclEnv</a>) <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a> <a href="src/GHC.Driver.Types.html#lookupTyCon" class="link">Source</a> <a href="#v:lookupTyCon" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:MonadThings:MonadThings:4"></span> <a href="GHC-Driver-Types.html#t:MonadThings" title="GHC.Driver.Types">MonadThings</a> (<a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:TcGblEnv" title="GHC.Tc.Types">TcGblEnv</a> <a href="GHC-Tc-Types.html#t:TcLclEnv" title="GHC.Tc.Types">TcLclEnv</a>))</span> <a href="src/GHC.Tc.Utils.Env.html#line-334" class="link">Source</a> <a href="#t:MonadThings" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:ic:MonadThings:MonadThings:4"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Tc-Utils-Env.html">GHC.Tc.Utils.Env</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:lookupThing">lookupThing</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:TcGblEnv" title="GHC.Tc.Types">TcGblEnv</a> <a href="GHC-Tc-Types.html#t:TcLclEnv" title="GHC.Tc.Types">TcLclEnv</a>) <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#lookupThing" class="link">Source</a> <a href="#v:lookupThing" class="selflink">#</a></p><p class="src"><a href="#v:lookupId">lookupId</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:TcGblEnv" title="GHC.Tc.Types">TcGblEnv</a> <a href="GHC-Tc-Types.html#t:TcLclEnv" title="GHC.Tc.Types">TcLclEnv</a>) <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a> <a href="src/GHC.Driver.Types.html#lookupId" class="link">Source</a> <a href="#v:lookupId" class="selflink">#</a></p><p class="src"><a href="#v:lookupDataCon">lookupDataCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:TcGblEnv" title="GHC.Tc.Types">TcGblEnv</a> <a href="GHC-Tc-Types.html#t:TcLclEnv" title="GHC.Tc.Types">TcLclEnv</a>) <a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a> <a href="src/GHC.Driver.Types.html#lookupDataCon" class="link">Source</a> <a href="#v:lookupDataCon" class="selflink">#</a></p><p class="src"><a href="#v:lookupTyCon">lookupTyCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="GHC-Data-IOEnv.html#t:IOEnv" title="GHC.Data.IOEnv">IOEnv</a> (<a href="GHC-Tc-Types.html#t:Env" title="GHC.Tc.Types">Env</a> <a href="GHC-Tc-Types.html#t:TcGblEnv" title="GHC.Tc.Types">TcGblEnv</a> <a href="GHC-Tc-Types.html#t:TcLclEnv" title="GHC.Tc.Types">TcLclEnv</a>) <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a> <a href="src/GHC.Driver.Types.html#lookupTyCon" class="link">Source</a> <a href="#v:lookupTyCon" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:MonadThings:MonadThings:5"></span> <a href="GHC-Driver-Types.html#t:MonadThings" title="GHC.Driver.Types">MonadThings</a> m =&gt; <a href="GHC-Driver-Types.html#t:MonadThings" title="GHC.Driver.Types">MonadThings</a> (<a href="../transformers/Control-Monad-Trans-Reader.html#t:ReaderT" title="Control.Monad.Trans.Reader">ReaderT</a> s m)</span> <a href="src/GHC.Driver.Types.html#line-2374" class="link">Source</a> <a href="#t:MonadThings" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:ic:MonadThings:MonadThings:5"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:lookupThing">lookupThing</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="../transformers/Control-Monad-Trans-Reader.html#t:ReaderT" title="Control.Monad.Trans.Reader">ReaderT</a> s m <a href="GHC-Driver-Types.html#t:TyThing" title="GHC.Driver.Types">TyThing</a> <a href="src/GHC.Driver.Types.html#lookupThing" class="link">Source</a> <a href="#v:lookupThing" class="selflink">#</a></p><p class="src"><a href="#v:lookupId">lookupId</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="../transformers/Control-Monad-Trans-Reader.html#t:ReaderT" title="Control.Monad.Trans.Reader">ReaderT</a> s m <a href="GHC-Types-Var.html#t:Id" title="GHC.Types.Var">Id</a> <a href="src/GHC.Driver.Types.html#lookupId" class="link">Source</a> <a href="#v:lookupId" class="selflink">#</a></p><p class="src"><a href="#v:lookupDataCon">lookupDataCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="../transformers/Control-Monad-Trans-Reader.html#t:ReaderT" title="Control.Monad.Trans.Reader">ReaderT</a> s m <a href="GHC-Core-DataCon.html#t:DataCon" title="GHC.Core.DataCon">DataCon</a> <a href="src/GHC.Driver.Types.html#lookupDataCon" class="link">Source</a> <a href="#v:lookupDataCon" class="selflink">#</a></p><p class="src"><a href="#v:lookupTyCon">lookupTyCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> -&gt; <a href="../transformers/Control-Monad-Trans-Reader.html#t:ReaderT" title="Control.Monad.Trans.Reader">ReaderT</a> s m <a href="GHC-Core-TyCon.html#t:TyCon" title="GHC.Core.TyCon">TyCon</a> <a href="src/GHC.Driver.Types.html#lookupTyCon" class="link">Source</a> <a href="#v:lookupTyCon" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><a href="#g:15" id="g:15"><h1>Information on imports and exports</h1></a><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:WhetherHasOrphans" class="def">WhetherHasOrphans</a> = <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#WhetherHasOrphans" class="link">Source</a> <a href="#t:WhetherHasOrphans" class="selflink">#</a></p><div class="doc"><p>Records whether a module has orphans. An &quot;orphan&quot; is one of:</p><ul><li>An instance declaration in a module other than the definition
   module for one of the type constructors or classes in the instance head</li><li>A rewrite rule in a module other than the one defining
   the function in the head of the rule</li></ul></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:IsBootInterface" class="def">IsBootInterface</a> <a href="src/GHC.Unit.Types.html#IsBootInterface" class="link">Source</a> <a href="#t:IsBootInterface" class="selflink">#</a></p><div class="doc"><p>Indicates whether a module name is referring to a boot interface (hs-boot
 file) or regular module (hs file). We need to treat boot modules specially
 when building compilation graphs, since they break cycles. Regular source
 files and signature files are treated equivalently.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:NotBoot" class="def">NotBoot</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:IsBoot" class="def">IsBoot</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:IsBootInterface">Instances</h4><details id="i:IsBootInterface" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:IsBootInterface:Data:1"></span> <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a></span> <a href="src/GHC.Unit.Types.html#line-677" class="link">Source</a> <a href="#t:IsBootInterface" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:IsBootInterface:Data:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Unit-Types.html">GHC.Unit.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:gfoldl">gfoldl</a> :: (<span class="keyword">forall</span> d b. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; c (d -&gt; b) -&gt; d -&gt; c b) -&gt; (<span class="keyword">forall</span> g. g -&gt; c g) -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; c <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="../base/src/Data.Data.html#gfoldl" class="link">Source</a> <a href="#v:gfoldl" class="selflink">#</a></p><p class="src"><a href="#v:gunfold">gunfold</a> :: (<span class="keyword">forall</span> b r. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> b =&gt; c (b -&gt; r) -&gt; c r) -&gt; (<span class="keyword">forall</span> r. r -&gt; c r) -&gt; <a href="../base/Data-Data.html#t:Constr" title="Data.Data">Constr</a> -&gt; c <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="../base/src/Data.Data.html#gunfold" class="link">Source</a> <a href="#v:gunfold" class="selflink">#</a></p><p class="src"><a href="#v:toConstr">toConstr</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="../base/Data-Data.html#t:Constr" title="Data.Data">Constr</a> <a href="../base/src/Data.Data.html#toConstr" class="link">Source</a> <a href="#v:toConstr" class="selflink">#</a></p><p class="src"><a href="#v:dataTypeOf">dataTypeOf</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="../base/Data-Data.html#t:DataType" title="Data.Data">DataType</a> <a href="../base/src/Data.Data.html#dataTypeOf" class="link">Source</a> <a href="#v:dataTypeOf" class="selflink">#</a></p><p class="src"><a href="#v:dataCast1">dataCast1</a> :: <a href="../base/Data-Typeable.html#t:Typeable" title="Data.Typeable">Typeable</a> t =&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; c (t d)) -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (c <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a>) <a href="../base/src/Data.Data.html#dataCast1" class="link">Source</a> <a href="#v:dataCast1" class="selflink">#</a></p><p class="src"><a href="#v:dataCast2">dataCast2</a> :: <a href="../base/Data-Typeable.html#t:Typeable" title="Data.Typeable">Typeable</a> t =&gt; (<span class="keyword">forall</span> d e. (<a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d, <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> e) =&gt; c (t d e)) -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (c <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a>) <a href="../base/src/Data.Data.html#dataCast2" class="link">Source</a> <a href="#v:dataCast2" class="selflink">#</a></p><p class="src"><a href="#v:gmapT">gmapT</a> :: (<span class="keyword">forall</span> b. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> b =&gt; b -&gt; b) -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="../base/src/Data.Data.html#gmapT" class="link">Source</a> <a href="#v:gmapT" class="selflink">#</a></p><p class="src"><a href="#v:gmapQl">gmapQl</a> :: (r -&gt; r' -&gt; r) -&gt; r -&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; r') -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; r <a href="../base/src/Data.Data.html#gmapQl" class="link">Source</a> <a href="#v:gmapQl" class="selflink">#</a></p><p class="src"><a href="#v:gmapQr">gmapQr</a> :: <span class="keyword">forall</span> r r'. (r' -&gt; r -&gt; r) -&gt; r -&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; r') -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; r <a href="../base/src/Data.Data.html#gmapQr" class="link">Source</a> <a href="#v:gmapQr" class="selflink">#</a></p><p class="src"><a href="#v:gmapQ">gmapQ</a> :: (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; u) -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; [u] <a href="../base/src/Data.Data.html#gmapQ" class="link">Source</a> <a href="#v:gmapQ" class="selflink">#</a></p><p class="src"><a href="#v:gmapQi">gmapQi</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; u) -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; u <a href="../base/src/Data.Data.html#gmapQi" class="link">Source</a> <a href="#v:gmapQi" class="selflink">#</a></p><p class="src"><a href="#v:gmapM">gmapM</a> :: <a href="GHC-Prelude.html#t:Monad" title="GHC.Prelude">Monad</a> m =&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; m d) -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; m <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="../base/src/Data.Data.html#gmapM" class="link">Source</a> <a href="#v:gmapM" class="selflink">#</a></p><p class="src"><a href="#v:gmapMp">gmapMp</a> :: <a href="../base/Control-Monad.html#t:MonadPlus" title="Control.Monad">MonadPlus</a> m =&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; m d) -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; m <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="../base/src/Data.Data.html#gmapMp" class="link">Source</a> <a href="#v:gmapMp" class="selflink">#</a></p><p class="src"><a href="#v:gmapMo">gmapMo</a> :: <a href="../base/Control-Monad.html#t:MonadPlus" title="Control.Monad">MonadPlus</a> m =&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; m d) -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; m <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="../base/src/Data.Data.html#gmapMo" class="link">Source</a> <a href="#v:gmapMo" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:IsBootInterface:Show:2"></span> <a href="GHC-Prelude.html#t:Show" title="GHC.Prelude">Show</a> <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a></span> <a href="src/GHC.Unit.Types.html#line-677" class="link">Source</a> <a href="#t:IsBootInterface" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:IsBootInterface:Show:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Unit-Types.html">GHC.Unit.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showsPrec" class="link">Source</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="../base/src/GHC.Show.html#show" class="link">Source</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a>] -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showList" class="link">Source</a> <a href="#v:showList" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:IsBootInterface:Binary:3"></span> <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a></span> <a href="src/GHC.Unit.Types.html#line-679" class="link">Source</a> <a href="#t:IsBootInterface" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:IsBootInterface:Binary:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Unit-Types.html">GHC.Unit.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:put_">put_</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Utils.Binary.html#put_" class="link">Source</a> <a href="#v:put_" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Utils-Binary.html#t:Bin" title="GHC.Utils.Binary">Bin</a> <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a>) <a href="src/GHC.Utils.Binary.html#put" class="link">Source</a> <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:get">get</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="src/GHC.Utils.Binary.html#get" class="link">Source</a> <a href="#v:get" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:IsBootInterface:Eq:4"></span> <a href="GHC-Prelude.html#t:Eq" title="GHC.Prelude">Eq</a> <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a></span> <a href="src/GHC.Unit.Types.html#line-677" class="link">Source</a> <a href="#t:IsBootInterface" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:IsBootInterface:Eq:4"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Unit-Types.html">GHC.Unit.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:IsBootInterface:Ord:5"></span> <a href="GHC-Prelude.html#t:Ord" title="GHC.Prelude">Ord</a> <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a></span> <a href="src/GHC.Unit.Types.html#line-677" class="link">Source</a> <a href="#t:IsBootInterface" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:IsBootInterface:Ord:5"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Unit-Types.html">GHC.Unit.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:compare">compare</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:Ordering" title="GHC.Prelude">Ordering</a> <a href="#v:compare" class="selflink">#</a></p><p class="src"><a href="#v:-60-">(&lt;)</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-60-" class="selflink">#</a></p><p class="src"><a href="#v:-60--61-">(&lt;=)</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-60--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62-">(&gt;)</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-62-" class="selflink">#</a></p><p class="src"><a href="#v:-62--61-">(&gt;=)</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-62--61-" class="selflink">#</a></p><p class="src"><a href="#v:max">max</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="#v:max" class="selflink">#</a></p><p class="src"><a href="#v:min">min</a> :: <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> -&gt; <a href="GHC-Driver-Types.html#t:IsBootInterface" title="GHC.Driver.Types">IsBootInterface</a> <a href="#v:min" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Usage" class="def">Usage</a> <a href="src/GHC.Driver.Types.html#Usage" class="link">Source</a> <a href="#t:Usage" class="selflink">#</a></p><div class="doc"><p>Records modules for which changes may force recompilation of this module
 See wiki: <a href="https://gitlab.haskell.org/ghc/ghc/wikis/commentary/compiler/recompilation-avoidance">https://gitlab.haskell.org/ghc/ghc/wikis/commentary/compiler/recompilation-avoidance</a></p><p>This differs from Dependencies.  A module X may be in the dep_mods of this
 module (via an import chain) but if we don't use anything from X it won't
 appear in our Usage</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:UsagePackageModule" class="def">UsagePackageModule</a></td><td class="doc"><p>Module from another package</p></td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:usg_mod" class="def">usg_mod</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></dfn><div class="doc"><p>External package module depended on</p></div></li><li><dfn class="src"><a id="v:usg_mod_hash" class="def">usg_mod_hash</a> :: <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Cached module fingerprint</p></div></li><li><dfn class="src"><a id="v:usg_safe" class="def">usg_safe</a> :: <a href="GHC-Driver-Types.html#t:IsSafeImport" title="GHC.Driver.Types">IsSafeImport</a></dfn><div class="doc"><p>Was this module imported as a safe import</p></div></li></ul></div></td></tr><tr><td class="src"><a id="v:UsageHomeModule" class="def">UsageHomeModule</a></td><td class="doc"><p>Module from the current package</p></td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:usg_mod_name" class="def">usg_mod_name</a> :: <a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a></dfn><div class="doc"><p>Name of the module</p></div></li><li><dfn class="src"><a id="v:usg_mod_hash" class="def">usg_mod_hash</a> :: <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Cached module fingerprint</p></div></li><li><dfn class="src"><a id="v:usg_entities" class="def">usg_entities</a> :: [(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a>)]</dfn><div class="doc"><p>Entities we depend on, sorted by occurrence name and fingerprinted.
 NB: usages are for parent names only, e.g. type constructors
 but not the associated data constructors.</p></div></li><li><dfn class="src"><a id="v:usg_exports" class="def">usg_exports</a> :: <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Fingerprint for the export list of this module,
 if we directly imported it (and hence we depend on its export list)</p></div></li><li><dfn class="src"><a id="v:usg_safe" class="def">usg_safe</a> :: <a href="GHC-Driver-Types.html#t:IsSafeImport" title="GHC.Driver.Types">IsSafeImport</a></dfn><div class="doc"><p>Was this module imported as a safe import</p></div></li></ul></div></td></tr><tr><td class="src"><a id="v:UsageFile" class="def">UsageFile</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:usg_file_path" class="def">usg_file_path</a> :: <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></dfn><div class="doc"><p>External file dependency. From a CPP #include or TH
 addDependentFile. Should be absolute.</p></div></li><li><dfn class="src"><a id="v:usg_file_hash" class="def">usg_file_hash</a> :: <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p><code><a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></code> of the file contents.</p></div></li></ul></div></td></tr><tr><td class="src"><a id="v:UsageMergedRequirement" class="def">UsageMergedRequirement</a></td><td class="doc"><p>A requirement which was merged into this one.</p></td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:usg_mod" class="def">usg_mod</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></dfn><div class="doc"><p>External package module depended on</p></div></li><li><dfn class="src"><a id="v:usg_mod_hash" class="def">usg_mod_hash</a> :: <a href="GHC-Utils-Fingerprint.html#t:Fingerprint" title="GHC.Utils.Fingerprint">Fingerprint</a></dfn><div class="doc"><p>Cached module fingerprint</p></div></li></ul></div></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:Usage">Instances</h4><details id="i:Usage" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Usage:Binary:1"></span> <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a></span> <a href="src/GHC.Driver.Types.html#line-2627" class="link">Source</a> <a href="#t:Usage" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Usage:Binary:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:put_">put_</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Utils.Binary.html#put_" class="link">Source</a> <a href="#v:put_" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Utils-Binary.html#t:Bin" title="GHC.Utils.Binary">Bin</a> <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a>) <a href="src/GHC.Utils.Binary.html#put" class="link">Source</a> <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:get">get</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a> <a href="src/GHC.Utils.Binary.html#get" class="link">Source</a> <a href="#v:get" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Usage:Eq:2"></span> <a href="GHC-Prelude.html#t:Eq" title="GHC.Prelude">Eq</a> <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a></span> <a href="src/GHC.Driver.Types.html#line-2613" class="link">Source</a> <a href="#t:Usage" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Usage:Eq:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a> -&gt; <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a> -&gt; <a href="GHC-Driver-Types.html#t:Usage" title="GHC.Driver.Types">Usage</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Dependencies" class="def">Dependencies</a> <a href="src/GHC.Driver.Types.html#Dependencies" class="link">Source</a> <a href="#t:Dependencies" class="selflink">#</a></p><div class="doc"><p>Dependency information about ALL modules and packages below this one
 in the import hierarchy.</p><p>Invariant: the dependencies of a module <code>M</code> never includes <code>M</code>.</p><p>Invariant: none of the lists contain duplicates.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:Deps" class="def">Deps</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:dep_mods" class="def">dep_mods</a> :: [<a href="GHC-Unit-Types.html#t:ModuleNameWithIsBoot" title="GHC.Unit.Types">ModuleNameWithIsBoot</a>]</dfn><div class="doc"><p>All home-package modules transitively below this one
 I.e. modules that this one imports, or that are in the
      dep_mods of those directly-imported modules</p></div></li><li><dfn class="src"><a id="v:dep_pkgs" class="def">dep_pkgs</a> :: [(<a href="GHC-Unit-Types.html#t:UnitId" title="GHC.Unit.Types">UnitId</a>, <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a>)]</dfn><div class="doc"><p>All packages transitively below this module
 I.e. packages to which this module's direct imports belong,
      or that are in the dep_pkgs of those modules
 The bool indicates if the package is required to be
 trusted when the module is imported as a safe import
 (Safe Haskell). See Note [Tracking Trust Transitively] in GHC.Rename.Names</p></div></li><li><dfn class="src"><a id="v:dep_orphs" class="def">dep_orphs</a> :: [<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>]</dfn><div class="doc"><p>Transitive closure of orphan modules (whether
 home or external pkg).</p><p>(Possible optimization: don't include family
 instance orphans as they are anyway included in
 <code><a href="GHC-Driver-Types.html#v:dep_finsts" title="GHC.Driver.Types">dep_finsts</a></code>.  But then be careful about code
 which relies on dep_orphs having the complete list!)
 This does NOT include us, unlike <code>imp_orphs</code>.</p></div></li><li><dfn class="src"><a id="v:dep_finsts" class="def">dep_finsts</a> :: [<a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a>]</dfn><div class="doc"><p>Transitive closure of depended upon modules which
 contain family instances (whether home or external).
 This is used by <code>checkFamInstConsistency</code>.  This
 does NOT include us, unlike <code>imp_finsts</code>. See Note
 [The type family instance consistency story].</p></div></li><li><dfn class="src"><a id="v:dep_plgins" class="def">dep_plgins</a> :: [<a href="GHC-Unit-Module-Name.html#t:ModuleName" title="GHC.Unit.Module.Name">ModuleName</a>]</dfn><div class="doc"><p>All the plugins used while compiling this module.</p></div></li></ul></div></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:Dependencies">Instances</h4><details id="i:Dependencies" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Dependencies:Binary:1"></span> <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a></span> <a href="src/GHC.Driver.Types.html#line-2544" class="link">Source</a> <a href="#t:Dependencies" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Dependencies:Binary:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:put_">put_</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Utils.Binary.html#put_" class="link">Source</a> <a href="#v:put_" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Utils-Binary.html#t:Bin" title="GHC.Utils.Binary">Bin</a> <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a>) <a href="src/GHC.Utils.Binary.html#put" class="link">Source</a> <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:get">get</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a> <a href="src/GHC.Utils.Binary.html#get" class="link">Source</a> <a href="#v:get" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Dependencies:Eq:2"></span> <a href="GHC-Prelude.html#t:Eq" title="GHC.Prelude">Eq</a> <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a></span> <a href="src/GHC.Driver.Types.html#line-2540" class="link">Source</a> <a href="#t:Dependencies" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Dependencies:Eq:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a> -&gt; <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a> -&gt; <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:noDependencies" class="def">noDependencies</a> :: <a href="GHC-Driver-Types.html#t:Dependencies" title="GHC.Driver.Types">Dependencies</a> <a href="src/GHC.Driver.Types.html#noDependencies" class="link">Source</a> <a href="#v:noDependencies" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:updNameCache" class="def">updNameCache</a> :: <a href="GHC-Data-IOEnv.html#t:IORef" title="GHC.Data.IOEnv">IORef</a> <a href="GHC-Types-Name-Cache.html#t:NameCache" title="GHC.Types.Name.Cache">NameCache</a> -&gt; (<a href="GHC-Types-Name-Cache.html#t:NameCache" title="GHC.Types.Name.Cache">NameCache</a> -&gt; (<a href="GHC-Types-Name-Cache.html#t:NameCache" title="GHC.Types.Name.Cache">NameCache</a>, c)) -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> c <a href="src/GHC.Driver.Types.html#updNameCache" class="link">Source</a> <a href="#v:updNameCache" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:IfaceExport" class="def">IfaceExport</a> = <a href="GHC-Types-Avail.html#t:AvailInfo" title="GHC.Types.Avail">AvailInfo</a> <a href="src/GHC.Driver.Types.html#IfaceExport" class="link">Source</a> <a href="#t:IfaceExport" class="selflink">#</a></p><div class="doc"><p>The original names declared of a certain module that are exported</p></div></div><a href="#g:16" id="g:16"><h1>Warnings</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Warnings" class="def">Warnings</a> <a href="src/GHC.Driver.Types.html#Warnings" class="link">Source</a> <a href="#t:Warnings" class="selflink">#</a></p><div class="doc"><p>Warning information for a module</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:NoWarnings" class="def">NoWarnings</a></td><td class="doc"><p>Nothing deprecated</p></td></tr><tr><td class="src"><a id="v:WarnAll" class="def">WarnAll</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a></td><td class="doc"><p>Whole module deprecated</p></td></tr><tr><td class="src"><a id="v:WarnSome" class="def">WarnSome</a> [(<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>, <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a>)]</td><td class="doc"><p>Some specific things deprecated</p></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:Warnings">Instances</h4><details id="i:Warnings" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Warnings:Binary:1"></span> <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a></span> <a href="src/GHC.Driver.Types.html#line-2417" class="link">Source</a> <a href="#t:Warnings" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Warnings:Binary:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:put_">put_</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Utils.Binary.html#put_" class="link">Source</a> <a href="#v:put_" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Utils-Binary.html#t:Bin" title="GHC.Utils.Binary">Bin</a> <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a>) <a href="src/GHC.Utils.Binary.html#put" class="link">Source</a> <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:get">get</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> <a href="src/GHC.Utils.Binary.html#get" class="link">Source</a> <a href="#v:get" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Warnings:Outputable:2"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a></span> <a href="src/GHC.Iface.Load.html#line-1250" class="link">Source</a> <a href="#t:Outputable" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Warnings:Outputable:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Iface-Load.html">GHC.Iface.Load</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Warnings:Eq:3"></span> <a href="GHC-Prelude.html#t:Eq" title="GHC.Prelude">Eq</a> <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a></span> <a href="src/GHC.Driver.Types.html#line-2415" class="link">Source</a> <a href="#t:Warnings" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Warnings:Eq:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:WarningTxt" class="def">WarningTxt</a> <a href="src/GHC.Types.Basic.html#WarningTxt" class="link">Source</a> <a href="#t:WarningTxt" class="selflink">#</a></p><div class="doc"><p>Warning Text</p><p>reason/explanation from a WARNING or DEPRECATED pragma</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:WarningTxt" class="def">WarningTxt</a> (<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Types-Basic.html#t:SourceText" title="GHC.Types.Basic">SourceText</a>) [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Types-Basic.html#t:StringLiteral" title="GHC.Types.Basic">StringLiteral</a>]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:DeprecatedTxt" class="def">DeprecatedTxt</a> (<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Types-Basic.html#t:SourceText" title="GHC.Types.Basic">SourceText</a>) [<a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Types-Basic.html#t:StringLiteral" title="GHC.Types.Basic">StringLiteral</a>]</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:WarningTxt">Instances</h4><details id="i:WarningTxt" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WarningTxt:Data:1"></span> <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a></span> <a href="src/GHC.Types.Basic.html#line-441" class="link">Source</a> <a href="#t:WarningTxt" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:WarningTxt:Data:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Types-Basic.html">GHC.Types.Basic</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:gfoldl">gfoldl</a> :: (<span class="keyword">forall</span> d b. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; c (d -&gt; b) -&gt; d -&gt; c b) -&gt; (<span class="keyword">forall</span> g. g -&gt; c g) -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; c <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> <a href="../base/src/Data.Data.html#gfoldl" class="link">Source</a> <a href="#v:gfoldl" class="selflink">#</a></p><p class="src"><a href="#v:gunfold">gunfold</a> :: (<span class="keyword">forall</span> b r. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> b =&gt; c (b -&gt; r) -&gt; c r) -&gt; (<span class="keyword">forall</span> r. r -&gt; c r) -&gt; <a href="../base/Data-Data.html#t:Constr" title="Data.Data">Constr</a> -&gt; c <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> <a href="../base/src/Data.Data.html#gunfold" class="link">Source</a> <a href="#v:gunfold" class="selflink">#</a></p><p class="src"><a href="#v:toConstr">toConstr</a> :: <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="../base/Data-Data.html#t:Constr" title="Data.Data">Constr</a> <a href="../base/src/Data.Data.html#toConstr" class="link">Source</a> <a href="#v:toConstr" class="selflink">#</a></p><p class="src"><a href="#v:dataTypeOf">dataTypeOf</a> :: <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="../base/Data-Data.html#t:DataType" title="Data.Data">DataType</a> <a href="../base/src/Data.Data.html#dataTypeOf" class="link">Source</a> <a href="#v:dataTypeOf" class="selflink">#</a></p><p class="src"><a href="#v:dataCast1">dataCast1</a> :: <a href="../base/Data-Typeable.html#t:Typeable" title="Data.Typeable">Typeable</a> t =&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; c (t d)) -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (c <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a>) <a href="../base/src/Data.Data.html#dataCast1" class="link">Source</a> <a href="#v:dataCast1" class="selflink">#</a></p><p class="src"><a href="#v:dataCast2">dataCast2</a> :: <a href="../base/Data-Typeable.html#t:Typeable" title="Data.Typeable">Typeable</a> t =&gt; (<span class="keyword">forall</span> d e. (<a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d, <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> e) =&gt; c (t d e)) -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> (c <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a>) <a href="../base/src/Data.Data.html#dataCast2" class="link">Source</a> <a href="#v:dataCast2" class="selflink">#</a></p><p class="src"><a href="#v:gmapT">gmapT</a> :: (<span class="keyword">forall</span> b. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> b =&gt; b -&gt; b) -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> <a href="../base/src/Data.Data.html#gmapT" class="link">Source</a> <a href="#v:gmapT" class="selflink">#</a></p><p class="src"><a href="#v:gmapQl">gmapQl</a> :: (r -&gt; r' -&gt; r) -&gt; r -&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; r') -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; r <a href="../base/src/Data.Data.html#gmapQl" class="link">Source</a> <a href="#v:gmapQl" class="selflink">#</a></p><p class="src"><a href="#v:gmapQr">gmapQr</a> :: <span class="keyword">forall</span> r r'. (r' -&gt; r -&gt; r) -&gt; r -&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; r') -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; r <a href="../base/src/Data.Data.html#gmapQr" class="link">Source</a> <a href="#v:gmapQr" class="selflink">#</a></p><p class="src"><a href="#v:gmapQ">gmapQ</a> :: (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; u) -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; [u] <a href="../base/src/Data.Data.html#gmapQ" class="link">Source</a> <a href="#v:gmapQ" class="selflink">#</a></p><p class="src"><a href="#v:gmapQi">gmapQi</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; u) -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; u <a href="../base/src/Data.Data.html#gmapQi" class="link">Source</a> <a href="#v:gmapQi" class="selflink">#</a></p><p class="src"><a href="#v:gmapM">gmapM</a> :: <a href="GHC-Prelude.html#t:Monad" title="GHC.Prelude">Monad</a> m =&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; m d) -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; m <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> <a href="../base/src/Data.Data.html#gmapM" class="link">Source</a> <a href="#v:gmapM" class="selflink">#</a></p><p class="src"><a href="#v:gmapMp">gmapMp</a> :: <a href="../base/Control-Monad.html#t:MonadPlus" title="Control.Monad">MonadPlus</a> m =&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; m d) -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; m <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> <a href="../base/src/Data.Data.html#gmapMp" class="link">Source</a> <a href="#v:gmapMp" class="selflink">#</a></p><p class="src"><a href="#v:gmapMo">gmapMo</a> :: <a href="../base/Control-Monad.html#t:MonadPlus" title="Control.Monad">MonadPlus</a> m =&gt; (<span class="keyword">forall</span> d. <a href="../base/Data-Data.html#t:Data" title="Data.Data">Data</a> d =&gt; d -&gt; m d) -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; m <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> <a href="../base/src/Data.Data.html#gmapMo" class="link">Source</a> <a href="#v:gmapMo" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WarningTxt:Binary:2"></span> <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a></span> <a href="src/GHC.Utils.Binary.html#line-1391" class="link">Source</a> <a href="#t:Binary" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:WarningTxt:Binary:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Utils-Binary.html">GHC.Utils.Binary</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:put_">put_</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Utils.Binary.html#put_" class="link">Source</a> <a href="#v:put_" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Utils-Binary.html#t:Bin" title="GHC.Utils.Binary">Bin</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a>) <a href="src/GHC.Utils.Binary.html#put" class="link">Source</a> <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:get">get</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> <a href="src/GHC.Utils.Binary.html#get" class="link">Source</a> <a href="#v:get" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WarningTxt:Outputable:3"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a></span> <a href="src/GHC.Types.Basic.html#line-443" class="link">Source</a> <a href="#t:WarningTxt" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:WarningTxt:Outputable:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Types-Basic.html">GHC.Types.Basic</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WarningTxt:Eq:4"></span> <a href="GHC-Prelude.html#t:Eq" title="GHC.Prelude">Eq</a> <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a></span> <a href="src/GHC.Types.Basic.html#line-441" class="link">Source</a> <a href="#t:WarningTxt" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:WarningTxt:Eq:4"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Types-Basic.html">GHC.Types.Basic</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="GHC-Driver-Types.html#t:WarningTxt" title="GHC.Driver.Types">WarningTxt</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:plusWarns" class="def">plusWarns</a> :: <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> -&gt; <a href="GHC-Driver-Types.html#t:Warnings" title="GHC.Driver.Types">Warnings</a> <a href="src/GHC.Driver.Types.html#plusWarns" class="link">Source</a> <a href="#v:plusWarns" class="selflink">#</a></p></div><a href="#g:17" id="g:17"><h1>Linker stuff</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Linkable" class="def">Linkable</a> <a href="src/GHC.Runtime.Linker.Types.html#Linkable" class="link">Source</a> <a href="#t:Linkable" class="selflink">#</a></p><div class="doc"><p>Information we can use to dynamically link modules into the compiler</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:LM" class="def">LM</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:linkableTime" class="def">linkableTime</a> :: <a href="../time/Data-Time-Clock.html#t:UTCTime" title="Data.Time.Clock">UTCTime</a></dfn><div class="doc"><p>Time at which this linkable was built
 (i.e. when the bytecodes were produced,
       or the mod date on the files)</p></div></li><li><dfn class="src"><a id="v:linkableModule" class="def">linkableModule</a> :: <a href="GHC-Unit-Types.html#t:Module" title="GHC.Unit.Types">Module</a></dfn><div class="doc"><p>The linkable module itself</p></div></li><li><dfn class="src"><a id="v:linkableUnlinked" class="def">linkableUnlinked</a> :: [<a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a>]</dfn><div class="doc"><p>Those files and chunks of code we have yet to link.</p><p>INVARIANT: A valid linkable always has at least one <code><a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a></code> item.
 If this list is empty, the Linkable represents a fake linkable, which
 is generated in HscNothing mode to avoid recompiling modules.</p><p>ToDo: Do items get removed from this list when they get linked?</p></div></li></ul></div></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:Linkable">Instances</h4><details id="i:Linkable" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Linkable:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:Linkable" title="GHC.Driver.Types">Linkable</a></span> <a href="src/GHC.Runtime.Linker.Types.html#line-79" class="link">Source</a> <a href="#t:Linkable" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Linkable:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Runtime-Linker-Types.html">GHC.Runtime.Linker.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:Linkable" title="GHC.Driver.Types">Linkable</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:Linkable" title="GHC.Driver.Types">Linkable</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:isObjectLinkable" class="def">isObjectLinkable</a> :: <a href="GHC-Driver-Types.html#t:Linkable" title="GHC.Driver.Types">Linkable</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#isObjectLinkable" class="link">Source</a> <a href="#v:isObjectLinkable" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:linkableObjs" class="def">linkableObjs</a> :: <a href="GHC-Driver-Types.html#t:Linkable" title="GHC.Driver.Types">Linkable</a> -&gt; [<a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>] <a href="src/GHC.Driver.Types.html#linkableObjs" class="link">Source</a> <a href="#v:linkableObjs" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Unlinked" class="def">Unlinked</a> <a href="src/GHC.Runtime.Linker.Types.html#Unlinked" class="link">Source</a> <a href="#t:Unlinked" class="selflink">#</a></p><div class="doc"><p>Objects which have yet to be linked by the compiler</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:DotO" class="def">DotO</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></td><td class="doc"><p>An object file (.o)</p></td></tr><tr><td class="src"><a id="v:DotA" class="def">DotA</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></td><td class="doc"><p>Static archive file (.a)</p></td></tr><tr><td class="src"><a id="v:DotDLL" class="def">DotDLL</a> <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a></td><td class="doc"><p>Dynamically linked library file (.so, .dll, .dylib)</p></td></tr><tr><td class="src"><a id="v:BCOs" class="def">BCOs</a> <a href="GHC-Driver-Types.html#t:CompiledByteCode" title="GHC.Driver.Types">CompiledByteCode</a> [<a href="GHC-Driver-Types.html#t:SptEntry" title="GHC.Driver.Types">SptEntry</a>]</td><td class="doc"><p>A byte-code object, lives only in memory. Also
 carries some static pointer table entries which
 should be loaded along with the BCOs.
 See Note [Grant plan for static forms] in
 <a href="GHC-Iface-Tidy-StaticPtrTable.html">GHC.Iface.Tidy.StaticPtrTable</a>.</p></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:Unlinked">Instances</h4><details id="i:Unlinked" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Unlinked:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a></span> <a href="src/GHC.Runtime.Linker.Types.html#line-96" class="link">Source</a> <a href="#t:Unlinked" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:Unlinked:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Runtime-Linker-Types.html">GHC.Runtime.Linker.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:CompiledByteCode" class="def">CompiledByteCode</a> <a href="src/GHC.ByteCode.Types.html#CompiledByteCode" class="link">Source</a> <a href="#t:CompiledByteCode" class="selflink">#</a></p><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:CompiledByteCode">Instances</h4><details id="i:CompiledByteCode" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:CompiledByteCode:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:CompiledByteCode" title="GHC.Driver.Types">CompiledByteCode</a></span> <a href="src/GHC.ByteCode.Types.html#line-57" class="link">Source</a> <a href="#t:CompiledByteCode" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:CompiledByteCode:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-ByteCode-Types.html">GHC.ByteCode.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:CompiledByteCode" title="GHC.Driver.Types">CompiledByteCode</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:CompiledByteCode" title="GHC.Driver.Types">CompiledByteCode</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:isObject" class="def">isObject</a> :: <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#isObject" class="link">Source</a> <a href="#v:isObject" class="selflink">#</a></p><div class="doc"><p>Is this an actual file on disk we can link in somehow?</p></div></div><div class="top"><p class="src"><a id="v:nameOfObject" class="def">nameOfObject</a> :: <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a> <a href="src/GHC.Driver.Types.html#nameOfObject" class="link">Source</a> <a href="#v:nameOfObject" class="selflink">#</a></p><div class="doc"><p>Retrieve the filename of the linkable if possible. Panic if it is a byte-code object</p></div></div><div class="top"><p class="src"><a id="v:isInterpretable" class="def">isInterpretable</a> :: <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#isInterpretable" class="link">Source</a> <a href="#v:isInterpretable" class="selflink">#</a></p><div class="doc"><p>Is this a bytecode linkable with no file on disk?</p></div></div><div class="top"><p class="src"><a id="v:byteCodeOfObject" class="def">byteCodeOfObject</a> :: <a href="GHC-Driver-Types.html#t:Unlinked" title="GHC.Driver.Types">Unlinked</a> -&gt; <a href="GHC-Driver-Types.html#t:CompiledByteCode" title="GHC.Driver.Types">CompiledByteCode</a> <a href="src/GHC.Driver.Types.html#byteCodeOfObject" class="link">Source</a> <a href="#v:byteCodeOfObject" class="selflink">#</a></p><div class="doc"><p>Retrieve the compiled byte-code if possible. Panic if it is a file-based linkable</p></div></div><a href="#g:18" id="g:18"><h1>Program coverage</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:HpcInfo" class="def">HpcInfo</a> <a href="src/GHC.Driver.Types.html#HpcInfo" class="link">Source</a> <a href="#t:HpcInfo" class="selflink">#</a></p><div class="doc"><p>Information about a modules use of Haskell Program Coverage</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:HpcInfo" class="def">HpcInfo</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:hpcInfoTickCount" class="def">hpcInfoTickCount</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a></dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:hpcInfoHash" class="def">hpcInfoHash</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a></dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr><tr><td class="src"><a id="v:NoHpcInfo" class="def">NoHpcInfo</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:hpcUsed" class="def">hpcUsed</a> :: <a href="GHC-Driver-Types.html#t:AnyHpcUsage" title="GHC.Driver.Types">AnyHpcUsage</a></dfn><div class="doc"><p>Is hpc used anywhere on the module *tree*?</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><a id="v:emptyHpcInfo" class="def">emptyHpcInfo</a> :: <a href="GHC-Driver-Types.html#t:AnyHpcUsage" title="GHC.Driver.Types">AnyHpcUsage</a> -&gt; <a href="GHC-Driver-Types.html#t:HpcInfo" title="GHC.Driver.Types">HpcInfo</a> <a href="src/GHC.Driver.Types.html#emptyHpcInfo" class="link">Source</a> <a href="#v:emptyHpcInfo" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:isHpcUsed" class="def">isHpcUsed</a> :: <a href="GHC-Driver-Types.html#t:HpcInfo" title="GHC.Driver.Types">HpcInfo</a> -&gt; <a href="GHC-Driver-Types.html#t:AnyHpcUsage" title="GHC.Driver.Types">AnyHpcUsage</a> <a href="src/GHC.Driver.Types.html#isHpcUsed" class="link">Source</a> <a href="#v:isHpcUsed" class="selflink">#</a></p><div class="doc"><p>Find out if HPC is used by this module or any of the modules
 it depends upon</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:AnyHpcUsage" class="def">AnyHpcUsage</a> = <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#AnyHpcUsage" class="link">Source</a> <a href="#t:AnyHpcUsage" class="selflink">#</a></p><div class="doc"><p>This is used to signal if one of my imports used HPC instrumentation
 even if there is no module-local HPC usage</p></div></div><a href="#g:19" id="g:19"><h1>Breakpoints</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ModBreaks" class="def">ModBreaks</a> <a href="src/GHC.ByteCode.Types.html#ModBreaks" class="link">Source</a> <a href="#t:ModBreaks" class="selflink">#</a></p><div class="doc"><p>All the information about the breakpoints for a module</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ModBreaks" class="def">ModBreaks</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:modBreaks_flags" class="def">modBreaks_flags</a> :: <a href="../ghci/GHCi-RemoteTypes.html#t:ForeignRef" title="GHCi.RemoteTypes">ForeignRef</a> <a href="../ghci/GHCi-BreakArray.html#t:BreakArray" title="GHCi.BreakArray">BreakArray</a></dfn><div class="doc"><p>The array of flags, one per breakpoint,
 indicating which breakpoints are enabled.</p></div></li><li><dfn class="src"><a id="v:modBreaks_locs" class="def">modBreaks_locs</a> :: !(<a href="../array/Data-Array.html#t:Array" title="Data.Array">Array</a> <a href="GHC-ByteCode-Types.html#t:BreakIndex" title="GHC.ByteCode.Types">BreakIndex</a> <a href="GHC-Types-SrcLoc.html#t:SrcSpan" title="GHC.Types.SrcLoc">SrcSpan</a>)</dfn><div class="doc"><p>An array giving the source span of each breakpoint.</p></div></li><li><dfn class="src"><a id="v:modBreaks_vars" class="def">modBreaks_vars</a> :: !(<a href="../array/Data-Array.html#t:Array" title="Data.Array">Array</a> <a href="GHC-ByteCode-Types.html#t:BreakIndex" title="GHC.ByteCode.Types">BreakIndex</a> [<a href="GHC-Types-Name-Occurrence.html#t:OccName" title="GHC.Types.Name.Occurrence">OccName</a>])</dfn><div class="doc"><p>An array giving the names of the free variables at each breakpoint.</p></div></li><li><dfn class="src"><a id="v:modBreaks_decls" class="def">modBreaks_decls</a> :: !(<a href="../array/Data-Array.html#t:Array" title="Data.Array">Array</a> <a href="GHC-ByteCode-Types.html#t:BreakIndex" title="GHC.ByteCode.Types">BreakIndex</a> [<a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a>])</dfn><div class="doc"><p>An array giving the names of the declarations enclosing each breakpoint.
 See Note [Field modBreaks_decls]</p></div></li><li><dfn class="src"><a id="v:modBreaks_ccs" class="def">modBreaks_ccs</a> :: !(<a href="../array/Data-Array.html#t:Array" title="Data.Array">Array</a> <a href="GHC-ByteCode-Types.html#t:BreakIndex" title="GHC.ByteCode.Types">BreakIndex</a> (<a href="../ghci/GHCi-RemoteTypes.html#t:RemotePtr" title="GHCi.RemoteTypes">RemotePtr</a> <a href="../base/GHC-Stack-CCS.html#t:CostCentre" title="GHC.Stack.CCS">CostCentre</a>))</dfn><div class="doc"><p>Array pointing to cost centre for each breakpoint</p></div></li><li><dfn class="src"><a id="v:modBreaks_breakInfo" class="def">modBreaks_breakInfo</a> :: <a href="../containers/Data-IntMap-Strict-Internal.html#t:IntMap" title="Data.IntMap.Strict.Internal">IntMap</a> <a href="GHC-ByteCode-Types.html#t:CgBreakInfo" title="GHC.ByteCode.Types">CgBreakInfo</a></dfn><div class="doc"><p>info about each breakpoint from the bytecode generator</p></div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><a id="v:emptyModBreaks" class="def">emptyModBreaks</a> :: <a href="GHC-Driver-Types.html#t:ModBreaks" title="GHC.Driver.Types">ModBreaks</a> <a href="src/GHC.ByteCode.Types.html#emptyModBreaks" class="link">Source</a> <a href="#v:emptyModBreaks" class="selflink">#</a></p><div class="doc"><p>Construct an empty ModBreaks</p></div></div><a href="#g:20" id="g:20"><h1>Safe Haskell information</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:IfaceTrustInfo" class="def">IfaceTrustInfo</a> <a href="src/GHC.Driver.Types.html#IfaceTrustInfo" class="link">Source</a> <a href="#t:IfaceTrustInfo" class="selflink">#</a></p><div class="doc"><p>Safe Haskell information for <code><a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a></code>
 Simply a wrapper around SafeHaskellMode to sepperate iface and flags</p></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:IfaceTrustInfo">Instances</h4><details id="i:IfaceTrustInfo" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:IfaceTrustInfo:Binary:1"></span> <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a></span> <a href="src/GHC.Driver.Types.html#line-3136" class="link">Source</a> <a href="#t:IfaceTrustInfo" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:IfaceTrustInfo:Binary:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:put_">put_</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Utils.Binary.html#put_" class="link">Source</a> <a href="#v:put_" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Utils-Binary.html#t:Bin" title="GHC.Utils.Binary">Bin</a> <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a>) <a href="src/GHC.Utils.Binary.html#put" class="link">Source</a> <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:get">get</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> <a href="src/GHC.Utils.Binary.html#get" class="link">Source</a> <a href="#v:get" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:IfaceTrustInfo:Outputable:2"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a></span> <a href="src/GHC.Driver.Types.html#line-3128" class="link">Source</a> <a href="#t:IfaceTrustInfo" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:IfaceTrustInfo:Outputable:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:getSafeMode" class="def">getSafeMode</a> :: <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> -&gt; <a href="GHC-Driver-Session.html#t:SafeHaskellMode" title="GHC.Driver.Session">SafeHaskellMode</a> <a href="src/GHC.Driver.Types.html#getSafeMode" class="link">Source</a> <a href="#v:getSafeMode" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:setSafeMode" class="def">setSafeMode</a> :: <a href="GHC-Driver-Session.html#t:SafeHaskellMode" title="GHC.Driver.Session">SafeHaskellMode</a> -&gt; <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> <a href="src/GHC.Driver.Types.html#setSafeMode" class="link">Source</a> <a href="#v:setSafeMode" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:noIfaceTrustInfo" class="def">noIfaceTrustInfo</a> :: <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> <a href="src/GHC.Driver.Types.html#noIfaceTrustInfo" class="link">Source</a> <a href="#v:noIfaceTrustInfo" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:trustInfoToNum" class="def">trustInfoToNum</a> :: <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> -&gt; <a href="../base/Data-Word.html#t:Word8" title="Data.Word">Word8</a> <a href="src/GHC.Driver.Types.html#trustInfoToNum" class="link">Source</a> <a href="#v:trustInfoToNum" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:numToTrustInfo" class="def">numToTrustInfo</a> :: <a href="../base/Data-Word.html#t:Word8" title="Data.Word">Word8</a> -&gt; <a href="GHC-Driver-Types.html#t:IfaceTrustInfo" title="GHC.Driver.Types">IfaceTrustInfo</a> <a href="src/GHC.Driver.Types.html#numToTrustInfo" class="link">Source</a> <a href="#v:numToTrustInfo" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:IsSafeImport" class="def">IsSafeImport</a> = <a href="GHC-Prelude.html#t:Bool" title="GHC.Prelude">Bool</a> <a href="src/GHC.Driver.Types.html#IsSafeImport" class="link">Source</a> <a href="#t:IsSafeImport" class="selflink">#</a></p><div class="doc"><p>Is an import a safe import?</p></div></div><a href="#g:21" id="g:21"><h1>result of the parser</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:HsParsedModule" class="def">HsParsedModule</a> <a href="src/GHC.Driver.Types.html#HsParsedModule" class="link">Source</a> <a href="#t:HsParsedModule" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:HsParsedModule" class="def">HsParsedModule</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:hpm_module" class="def">hpm_module</a> :: <a href="GHC-Types-SrcLoc.html#t:Located" title="GHC.Types.SrcLoc">Located</a> <a href="GHC-Hs.html#t:HsModule" title="GHC.Hs">HsModule</a></dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:hpm_src_files" class="def">hpm_src_files</a> :: [<a href="GHC-Prelude.html#t:FilePath" title="GHC.Prelude">FilePath</a>]</dfn><div class="doc"><p>extra source files (e.g. from #includes).  The lexer collects
 these from '# <a href="file">file</a> <a href="line">line</a>' pragmas, which the C preprocessor
 leaves behind.  These files and their timestamps are stored in
 the .hi file, so that we can force recompilation if any of
 them change (#3589)</p></div></li><li><dfn class="src"><a id="v:hpm_annotations" class="def">hpm_annotations</a> :: <a href="GHC-Parser-Annotation.html#t:ApiAnns" title="GHC.Parser.Annotation">ApiAnns</a></dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr></table></div></div><a href="#g:22" id="g:22"><h1>Compilation errors and warnings</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:SourceError" class="def">SourceError</a> <a href="src/GHC.Driver.Types.html#SourceError" class="link">Source</a> <a href="#t:SourceError" class="selflink">#</a></p><div class="doc"><p>A source error is an error that is caused by one or more errors in the
 source code.  A <code><a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a></code> is thrown by many functions in the
 compilation pipeline.  Inside GHC these errors are merely printed via
 <code><a href="GHC-Driver-Session.html#v:log_action" title="GHC.Driver.Session">log_action</a></code>, but API clients may treat them differently, for example,
 insert them into a list box.  If you want the default behaviour, use the
 idiom:</p><pre>handleSourceError printExceptionAndWarnings $ do
  ... api calls that may fail ...</pre><p>The <code><a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a></code>s error messages can be accessed via <code><a href="GHC-Driver-Types.html#v:srcErrorMessages" title="GHC.Driver.Types">srcErrorMessages</a></code>.
 This list may be empty if the compiler failed due to <code>-Werror</code>
 (<code><a href="GHC-Driver-Session.html#v:Opt_WarnIsError" title="GHC.Driver.Session">Opt_WarnIsError</a></code>).</p><p>See <code>printExceptionAndWarnings</code> for more information on what to take care
 of when writing a custom error handler.</p></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:SourceError">Instances</h4><details id="i:SourceError" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:SourceError:Exception:1"></span> <a href="GHC-Utils-Panic.html#t:Exception" title="GHC.Utils.Panic">Exception</a> <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a></span> <a href="src/GHC.Driver.Types.html#line-351" class="link">Source</a> <a href="#t:SourceError" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:SourceError:Exception:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:toException">toException</a> :: <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> -&gt; <a href="../base/Control-Exception.html#t:SomeException" title="Control.Exception">SomeException</a> <a href="../base/src/GHC.Exception.Type.html#toException" class="link">Source</a> <a href="#v:toException" class="selflink">#</a></p><p class="src"><a href="#v:fromException">fromException</a> :: <a href="../base/Control-Exception.html#t:SomeException" title="Control.Exception">SomeException</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> <a href="../base/src/GHC.Exception.Type.html#fromException" class="link">Source</a> <a href="#v:fromException" class="selflink">#</a></p><p class="src"><a href="#v:displayException">displayException</a> :: <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="../base/src/GHC.Exception.Type.html#displayException" class="link">Source</a> <a href="#v:displayException" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:SourceError:Show:2"></span> <a href="GHC-Prelude.html#t:Show" title="GHC.Prelude">Show</a> <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a></span> <a href="src/GHC.Driver.Types.html#line-348" class="link">Source</a> <a href="#t:SourceError" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:SourceError:Show:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showsPrec" class="link">Source</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="../base/src/GHC.Show.html#show" class="link">Source</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a>] -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showList" class="link">Source</a> <a href="#v:showList" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:GhcApiError" class="def">GhcApiError</a> <a href="src/GHC.Driver.Types.html#GhcApiError" class="link">Source</a> <a href="#t:GhcApiError" class="selflink">#</a></p><div class="doc"><p>An error thrown if the GHC API is used in an incorrect fashion.</p></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:GhcApiError">Instances</h4><details id="i:GhcApiError" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:GhcApiError:Exception:1"></span> <a href="GHC-Utils-Panic.html#t:Exception" title="GHC.Utils.Panic">Exception</a> <a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a></span> <a href="src/GHC.Driver.Types.html#line-368" class="link">Source</a> <a href="#t:GhcApiError" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:GhcApiError:Exception:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:toException">toException</a> :: <a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a> -&gt; <a href="../base/Control-Exception.html#t:SomeException" title="Control.Exception">SomeException</a> <a href="../base/src/GHC.Exception.Type.html#toException" class="link">Source</a> <a href="#v:toException" class="selflink">#</a></p><p class="src"><a href="#v:fromException">fromException</a> :: <a href="../base/Control-Exception.html#t:SomeException" title="Control.Exception">SomeException</a> -&gt; <a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> <a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a> <a href="../base/src/GHC.Exception.Type.html#fromException" class="link">Source</a> <a href="#v:fromException" class="selflink">#</a></p><p class="src"><a href="#v:displayException">displayException</a> :: <a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="../base/src/GHC.Exception.Type.html#displayException" class="link">Source</a> <a href="#v:displayException" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:GhcApiError:Show:2"></span> <a href="GHC-Prelude.html#t:Show" title="GHC.Prelude">Show</a> <a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a></span> <a href="src/GHC.Driver.Types.html#line-365" class="link">Source</a> <a href="#t:GhcApiError" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:GhcApiError:Show:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="GHC-Prelude.html#t:Int" title="GHC.Prelude">Int</a> -&gt; <a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a> -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showsPrec" class="link">Source</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a> -&gt; <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="../base/src/GHC.Show.html#show" class="link">Source</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a>] -&gt; <a href="GHC-Prelude.html#t:ShowS" title="GHC.Prelude">ShowS</a> <a href="../base/src/GHC.Show.html#showList" class="link">Source</a> <a href="#v:showList" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:mkSrcErr" class="def">mkSrcErr</a> :: <a href="GHC-Utils-Error.html#t:ErrorMessages" title="GHC.Utils.Error">ErrorMessages</a> -&gt; <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> <a href="src/GHC.Driver.Types.html#mkSrcErr" class="link">Source</a> <a href="#v:mkSrcErr" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:srcErrorMessages" class="def">srcErrorMessages</a> :: <a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> -&gt; <a href="GHC-Utils-Error.html#t:ErrorMessages" title="GHC.Utils.Error">ErrorMessages</a> <a href="src/GHC.Driver.Types.html#srcErrorMessages" class="link">Source</a> <a href="#v:srcErrorMessages" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mkApiErr" class="def">mkApiErr</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> -&gt; <a href="GHC-Driver-Types.html#t:GhcApiError" title="GHC.Driver.Types">GhcApiError</a> <a href="src/GHC.Driver.Types.html#mkApiErr" class="link">Source</a> <a href="#v:mkApiErr" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:throwOneError" class="def">throwOneError</a> :: <a href="GHC-Utils-Monad.html#t:MonadIO" title="GHC.Utils.Monad">MonadIO</a> io =&gt; <a href="GHC-Utils-Error.html#t:ErrMsg" title="GHC.Utils.Error">ErrMsg</a> -&gt; io a <a href="src/GHC.Driver.Types.html#throwOneError" class="link">Source</a> <a href="#v:throwOneError" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:throwErrors" class="def">throwErrors</a> :: <a href="GHC-Utils-Monad.html#t:MonadIO" title="GHC.Utils.Monad">MonadIO</a> io =&gt; <a href="GHC-Utils-Error.html#t:ErrorMessages" title="GHC.Utils.Error">ErrorMessages</a> -&gt; io a <a href="src/GHC.Driver.Types.html#throwErrors" class="link">Source</a> <a href="#v:throwErrors" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:handleSourceError" class="def">handleSourceError</a> <a href="src/GHC.Driver.Types.html#handleSourceError" class="link">Source</a> <a href="#v:handleSourceError" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="../exceptions/Control-Monad-Catch.html#t:MonadCatch" title="Control.Monad.Catch">MonadCatch</a> m</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; (<a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a> -&gt; m a)</td><td class="doc"><p>exception handler</p></td></tr><tr><td class="src">-&gt; m a</td><td class="doc"><p>action to perform</p></td></tr><tr><td class="src">-&gt; m a</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Perform the given action and call the exception handler if the action
 throws a <code><a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a></code>.  See <code><a href="GHC-Driver-Types.html#t:SourceError" title="GHC.Driver.Types">SourceError</a></code> for more information.</p></div></div><div class="top"><p class="src"><a id="v:handleFlagWarnings" class="def">handleFlagWarnings</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; [<a href="GHC-Driver-CmdLine.html#t:Warn" title="GHC.Driver.CmdLine">Warn</a>] -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Driver.Types.html#handleFlagWarnings" class="link">Source</a> <a href="#v:handleFlagWarnings" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:printOrThrowWarnings" class="def">printOrThrowWarnings</a> :: <a href="GHC-Driver-Session.html#t:DynFlags" title="GHC.Driver.Session">DynFlags</a> -&gt; <a href="GHC-Data-Bag.html#t:Bag" title="GHC.Data.Bag">Bag</a> <a href="GHC-Utils-Error.html#t:WarnMsg" title="GHC.Utils.Error">WarnMsg</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Driver.Types.html#printOrThrowWarnings" class="link">Source</a> <a href="#v:printOrThrowWarnings" class="selflink">#</a></p><div class="doc"><p>Given a bag of warnings, turn them into an exception if
 -Werror is enabled, or print them out otherwise.</p></div></div><a href="#g:23" id="g:23"><h1>COMPLETE signature</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:CompleteMatch" class="def">CompleteMatch</a> <a href="src/GHC.Driver.Types.html#CompleteMatch" class="link">Source</a> <a href="#t:CompleteMatch" class="selflink">#</a></p><div class="doc"><p>A list of conlikes which represents a complete pattern match.
 These arise from <code>COMPLETE</code> signatures.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:CompleteMatch" class="def">CompleteMatch</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:completeMatchConLikes" class="def">completeMatchConLikes</a> :: [<a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a>]</dfn><div class="doc"><p>The ConLikes that form a covering family
 (e.g. Nothing, Just)</p></div></li><li><dfn class="src"><a id="v:completeMatchTyCon" class="def">completeMatchTyCon</a> :: <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a></dfn><div class="doc"><p>The TyCon that they cover (e.g. Maybe)</p></div></li></ul></div></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:CompleteMatch">Instances</h4><details id="i:CompleteMatch" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:CompleteMatch:Outputable:1"></span> <a href="GHC-Utils-Outputable.html#t:Outputable" title="GHC.Utils.Outputable">Outputable</a> <a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a></span> <a href="src/GHC.Driver.Types.html#line-3222" class="link">Source</a> <a href="#t:CompleteMatch" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:CompleteMatch:Outputable:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:ppr">ppr</a> :: <a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#ppr" class="link">Source</a> <a href="#v:ppr" class="selflink">#</a></p><p class="src"><a href="#v:pprPrec">pprPrec</a> :: <a href="GHC-Prelude.html#t:Rational" title="GHC.Prelude">Rational</a> -&gt; <a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a> -&gt; <a href="GHC-Utils-Outputable.html#t:SDoc" title="GHC.Utils.Outputable">SDoc</a> <a href="src/GHC.Utils.Outputable.html#pprPrec" class="link">Source</a> <a href="#v:pprPrec" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:CompleteMatchMap" class="def">CompleteMatchMap</a> = <a href="GHC-Types-Unique-FM.html#t:UniqFM" title="GHC.Types.Unique.FM">UniqFM</a> <a href="GHC-Types-Name.html#t:Name" title="GHC.Types.Name">Name</a> [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>] <a href="src/GHC.Driver.Types.html#CompleteMatchMap" class="link">Source</a> <a href="#t:CompleteMatchMap" class="selflink">#</a></p><div class="doc"><p>A map keyed by the <code><a href="GHC-Driver-Types.html#v:completeMatchTyCon" title="GHC.Driver.Types">completeMatchTyCon</a></code> which has type Name.</p></div></div><div class="top"><p class="src"><a id="v:mkCompleteMatchMap" class="def">mkCompleteMatchMap</a> :: [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>] -&gt; <a href="GHC-Driver-Types.html#t:CompleteMatchMap" title="GHC.Driver.Types">CompleteMatchMap</a> <a href="src/GHC.Driver.Types.html#mkCompleteMatchMap" class="link">Source</a> <a href="#v:mkCompleteMatchMap" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:extendCompleteMatchMap" class="def">extendCompleteMatchMap</a> :: <a href="GHC-Driver-Types.html#t:CompleteMatchMap" title="GHC.Driver.Types">CompleteMatchMap</a> -&gt; [<a href="GHC-Driver-Types.html#t:CompleteMatch" title="GHC.Driver.Types">CompleteMatch</a>] -&gt; <a href="GHC-Driver-Types.html#t:CompleteMatchMap" title="GHC.Driver.Types">CompleteMatchMap</a> <a href="src/GHC.Driver.Types.html#extendCompleteMatchMap" class="link">Source</a> <a href="#v:extendCompleteMatchMap" class="selflink">#</a></p></div><a href="#g:24" id="g:24"><h1>Exstensible Iface fields</h1></a><div class="top"><p class="src"><span class="keyword">newtype</span> <a id="t:ExtensibleFields" class="def">ExtensibleFields</a> <a href="src/GHC.Driver.Types.html#ExtensibleFields" class="link">Source</a> <a href="#t:ExtensibleFields" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ExtensibleFields" class="def">ExtensibleFields</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:getExtensibleFields" class="def">getExtensibleFields</a> :: <a href="../containers/Data-Map-Strict.html#t:Map" title="Data.Map.Strict">Map</a> <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> <a href="GHC-Utils-Binary.html#t:BinData" title="GHC.Utils.Binary">BinData</a></dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:ExtensibleFields">Instances</h4><details id="i:ExtensibleFields" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ExtensibleFields:NFData:1"></span> <a href="../deepseq/Control-DeepSeq.html#t:NFData" title="Control.DeepSeq">NFData</a> <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a></span> <a href="src/GHC.Driver.Types.html#line-3359" class="link">Source</a> <a href="#t:ExtensibleFields" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:ExtensibleFields:NFData:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:rnf">rnf</a> :: <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> -&gt; () <a href="../deepseq/src/Control.DeepSeq.html#rnf" class="link">Source</a> <a href="#v:rnf" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ExtensibleFields:Binary:2"></span> <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a></span> <a href="src/GHC.Driver.Types.html#line-3324" class="link">Source</a> <a href="#t:ExtensibleFields" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:id:ExtensibleFields:Binary:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="GHC-Driver-Types.html">GHC.Driver.Types</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:put_">put_</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> () <a href="src/GHC.Utils.Binary.html#put_" class="link">Source</a> <a href="#v:put_" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Utils-Binary.html#t:Bin" title="GHC.Utils.Binary">Bin</a> <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a>) <a href="src/GHC.Utils.Binary.html#put" class="link">Source</a> <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:get">get</a> :: <a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> <a href="src/GHC.Utils.Binary.html#get" class="link">Source</a> <a href="#v:get" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:FieldName" class="def">FieldName</a> = <a href="GHC-Prelude.html#t:String" title="GHC.Prelude">String</a> <a href="src/GHC.Driver.Types.html#FieldName" class="link">Source</a> <a href="#t:FieldName" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:emptyExtensibleFields" class="def">emptyExtensibleFields</a> :: <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> <a href="src/GHC.Driver.Types.html#emptyExtensibleFields" class="link">Source</a> <a href="#v:emptyExtensibleFields" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:readField" class="def">readField</a> :: <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> a =&gt; <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> a) <a href="src/GHC.Driver.Types.html#readField" class="link">Source</a> <a href="#v:readField" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:readIfaceField" class="def">readIfaceField</a> :: <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> a =&gt; <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> a) <a href="src/GHC.Driver.Types.html#readIfaceField" class="link">Source</a> <a href="#v:readIfaceField" class="selflink">#</a></p><div class="doc"><p>Reading</p></div></div><div class="top"><p class="src"><a id="v:readIfaceFieldWith" class="def">readIfaceFieldWith</a> :: <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; (<a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> a) -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> (<a href="GHC-Prelude.html#t:Maybe" title="GHC.Prelude">Maybe</a> a) <a href="src/GHC.Driver.Types.html#readIfaceFieldWith" class="link">Source</a> <a href="#v:readIfaceFieldWith" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:writeField" class="def">writeField</a> :: <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> a =&gt; <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; a -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> <a href="src/GHC.Driver.Types.html#writeField" class="link">Source</a> <a href="#v:writeField" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:writeIfaceField" class="def">writeIfaceField</a> :: <a href="GHC-Utils-Binary.html#t:Binary" title="GHC.Utils.Binary">Binary</a> a =&gt; <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; a -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="src/GHC.Driver.Types.html#writeIfaceField" class="link">Source</a> <a href="#v:writeIfaceField" class="selflink">#</a></p><div class="doc"><p>Writing</p></div></div><div class="top"><p class="src"><a id="v:writeIfaceFieldWith" class="def">writeIfaceFieldWith</a> :: <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; (<a href="GHC-Utils-Binary.html#t:BinHandle" title="GHC.Utils.Binary">BinHandle</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> ()) -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Prelude.html#t:IO" title="GHC.Prelude">IO</a> <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="src/GHC.Driver.Types.html#writeIfaceFieldWith" class="link">Source</a> <a href="#v:writeIfaceFieldWith" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:deleteField" class="def">deleteField</a> :: <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> -&gt; <a href="GHC-Driver-Types.html#t:ExtensibleFields" title="GHC.Driver.Types">ExtensibleFields</a> <a href="src/GHC.Driver.Types.html#deleteField" class="link">Source</a> <a href="#v:deleteField" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:deleteIfaceField" class="def">deleteIfaceField</a> :: <a href="GHC-Driver-Types.html#t:FieldName" title="GHC.Driver.Types">FieldName</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> -&gt; <a href="GHC-Driver-Types.html#t:ModIface" title="GHC.Driver.Types">ModIface</a> <a href="src/GHC.Driver.Types.html#deleteIfaceField" class="link">Source</a> <a href="#v:deleteIfaceField" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.25.1</p></div></body></html>